gcc5+opencv4.0.1 "玄学"bug记录

近期须要使用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

相关文章
相关标签/搜索