在早期,我已经安装了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?你能帮忙吗?