近期须要使用OpenCV中的gpu加速的一些函数,须要从新编译OpenCV库文件. 因为本机安装的cuda9.0对编译器gcc的版本有要求,平时经常使用的gcc7.0用不了,因此选用了gcc5.5 . OpenCV编译过程很顺利,可是在调用OpenCV的工程中却报了OpenCV源代码的错,不少函数,变量没法识别. 就下边这几行简单的代码,c++
1 #include <opencv2/core.hpp> 2 #include <opencv2/imgproc.hpp> 3 #include <opencv2/highgui.hpp> 4 5 int main(int argc, const char *argv[]) 6 { 7 8 cv::Mat image = cv::imread("/home/Codes/StereoReconstruction_v2/build/out.jpg"); 9 cv::imshow("selected", image); 10 cv::waitKey(); 11 }
编译环境明明和刚刚编译opencv是同样的,并且更奇怪的是这个例程用gcc7能够顺利编译, 项目的其余依赖项限制了必需要用gcc5, 没办法,只有硬着头皮找缘由.函数
肯定项目关于opencv的路径设置都正常,焦头烂额之际,发现报错的第一个源码文件不是opencv的,而是c++0x-warning.h 说须要编译器和库文件支持c++11,查了一下gcc5.5是支持c++11的,没毛病,但是为何还会出错?ui
想着老板安排的活又干不完了,旁边也没有能够请教的大神, 对着cmake gui我无助地快哭了. 转念又一想,可能gcc5.5没有默认支持c++11,而opencv 源码/头文件中有一些是c++11的特征,因此会识别不了. spa
随即在cmake 的CXXflags项加上-std=c++11,编译经过!c++11
虽然常常写cmakelists,可是历来没有注意和编译器相关的一些配置选项,致使被这么个基础的问题困扰了两个多小时. 特在此记录以示警惕. code
短短的第一篇博客记念血泪满满的两小时, 20:05:15blog