opencv程序编译可以独立于ubuntu14.04中的Qt吗?

时间:2016-03-08 08:07:55

标签: qt opencv ubuntu gcc

在早期,我已经安装了Qt。现在,我想在VM的ubuntu 14.04终端中用C语言编写opencv-3.0.0程序。我不希望我的程序与Qt有关,因为稍后我会打包我的C语言程序,用于调用Andriod平台上的java接口。

为了使我的程序不受Qt库函数的影响,我在/etc/bash.bashrc文件中屏蔽了Qt的路径变量。但它不起作用。我无法理解编译错误。为什么编译器总是在Qt5中找到gcc?当然,错误的路径" /home/lmk/Qt5.5.0/5.5/gcc"是我安装Qt5的地方,但我已经成功安装了新的gcc。

一个简单的例子如下:

#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
  Mat img = imread("cornea.jpg");
  imshow("src, img");
  waitKey(0);
  return 0;
}

然后我用gcc-5.3.0使用这个命令编译它:

  

g ++ test.cpp -o test pkg-config opencv --cflags --libs opencv

编译结果如下:

  

/ usr / bin / ld:警告:libicui18n.so.54,找不到//home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5,找不到(尝试使用-rpath或-rpath链接)
  / usr / bin / ld:警告:libicuuc.so.54,//home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5所需,找不到(尝试使用-rpath或-rpath-链接)
  / usr / bin / ld:警告:libicudata.so.54,找不到//home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5,找不到(尝试使用-rpath或-rpath-链接)
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_clone_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“uenum_next_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“u_strToLower_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_getStandardName_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucol_setAttribute_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_setMillis_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucol_strcoll_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_setSubstChars_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_getTimeZoneDisplayName_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_openCountryTimeZones_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_fromUnicode_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_open_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_getDefaultName_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucol_open_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucol_close_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_inDaylightTime_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucol_getSortKey_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_getAvailableName_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_close_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_get_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_openTimeZoneIDEnumeration_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_getDSTSavings_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_open_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_openTimeZones_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_toUnicode_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“u_strToUpper_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“u_errorName_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_close_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“uenum_close_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_countAvailable_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_getMaxCharSize_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_getAlias_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucal_getDefaultTimeZone_54”未定义的引用
  //home/lmk/Qt5.5.0/5.5/gcc/lib/libQt5Core.so.5:对“ucnv_compareNames_54”未定义的引用
  collect2:错误:ld返回1退出状态

使用命令行:

  

哪个gcc

答案是:

  

/usr/gcc-5.0.0/bin/gcc

太奇怪了!

这里我想问一个问题:opencv程序编译是否可以独立于Qt?你能帮忙吗?

0 个答案:

没有答案