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
上一篇: javascript设计模式 – 中介者模式原理与用法实例分析
下一篇: luogu1368 工艺
推荐阅读
-
Django开发学习BUG记录--RemovedInDjango19Warning:Model class apps.user.models.User doesn't declare an explicit app_label
-
记录Window系统下myeclipes连接linux下mysql所出现的一个bug
-
记录一次BUG修复-Entity Framwork SaveChanges()失效
-
Bug: 删除中间某条记录后/删除最后一条记录再添加 ,auto-increment的自动增长不连续
-
【openmv】openmv各种bug问题记录
-
微信小程序bug记录与解决
-
pytorch遇到的bug记录—2
-
关于微信小程序bug记录与解决方法
-
java爬虫爬取的bug记录
-
记录vue用 html5+做移动APP 用barcode做扫一扫功能时安卓 的bug(黑屏、错位等等)和解决方法