TOP

gcc5+opencv4.0.1 玄学bug记录
2019-07-10 22:09:53 】 浏览:49
Tags:gcc5 opencv4.0.1 玄学 bug 记录

近期需要使用OpenCV中的gpu加速的一些函数,需要重新编译OpenCV库文件. 由于本机安装的cuda9.0对编译器gcc的版本有要求,平时常用的gcc7.0用不了,所以选用了gcc5.5 .OpenCV编译过程很顺利,但是在调用OpenCV的工程中却报了OpenCV源代码的错,很多函数,变量无法识别. 就下边这几行简单的代码,

 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的,没毛病,可是为什么还会出错?

想着老板安排的活又干不完了,旁边也没有可以请教的大神, 对着cmake gui我无助地快哭了. 转念又一想,可能gcc5.5没有默认支持c++11,而opencv 源码/头文件中有一些是c++11的特征,所以会识别不了.

随即在cmake 的CXXflags项加上-std=c++11,编译通过!

虽然经常写cmakelists,但是从来没有注意和编译器相关的一些配置选项,导致被这么个基础的问题困扰了两个多小时. 特在此记录以示警戒. 

短短的第一篇博客纪念血泪满满的两小时, 20:05:15


gcc5+opencv4.0.1 玄学bug记录 https://www.cppentry.com/bencandy.php?fid=49&id=227504

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[LGP4707] 重返现世 下一篇kuangbin专题 专题一 简单搜索 Fi..