既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
没想到开通博客的第一篇博客竟然是送给交叉编译的……特以此文致敬在编译路上渐行渐远的程序员们。
转载请注明出处。
-------------------------------------------------------------------------------------分割线------------------------------------------------------------------------------------------
问题来自于在一次在arm开发板上使用opencv的cv::VideoCapture类的open()方法来打开视频文件时候,总是无法成功打开文件,我使用的opencv是3.2.0版的。经过排查,确定是由于没有把ffmpeg模块编译进去导致视频文件读取失败的。下图是编译opencv时候的cmake配置界面(不熟悉cmake的朋友可以先看看网上前辈们的教程,很详细)。
这里出现一个很奇怪的问题,明明上面选择了WITH_FFMPEG,而且对应的库也都找到了,但是在configure之后FFMPEG一直是NO,而且这个问题只有在选择交叉编译工具链之后出现,使用PC的本地编译工具链就没有问题。网上查看configure输出的时候发现如下图的问题。
这里出现一个warning,说FFMPEG的test代码没有构建成功,于是就去查看CMakeList.txt。发现下图的代码片段。原来除了WITH_FFMPEG之外,还有一个HAVE_FFMPEG来打印是否含有FFMPEG模块,于是继续搜索这两个宏的作用。
之后找到了如下图的代码段。原来在定义了HAVE_FFMPEG宏之后,opencv的构建脚本要尝试去编译"${OpenCV_SOURCE_DIR}/cmake/checks/ffmpeg_test.cpp"代码,如果编译通过才会把这个宏置为有效,否则就认为没有相应的FFMPEG的库。
"${OpenCV
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新