前些日子手动编译opencv模块的时候,一直提示找不到ffmpeg libs (例如 libswscale , libavformat 等库)。 奇怪,明明我源码安装了 ffmpeg,但为什么还是找不到呢。
通过cmake的 的脚本,阅读了下cmake的一些脚本,终于找到了原因并解决。 opencv的cmake脚本使用了 CHECK_MODULE 宏, 而这个宏又调用了 pkg_check_module 宏。(此宏的定义在 /usr/share/cmake/FindPkgConfig.cmake)。 pkg_check_module中需要通过 pkg-config 命令来查找是否有对应的package 模块。 所以我们也需要安装 pkg-config 软件包。 那么pkg-config 又是如何来知道我们的系统是否安装了某个模块呢? pkg-config是通过 *.pc 的文件来判断。 例如 如果pkg-config找到了 libswscale2.11.pc 则就说明我们有 libswscale 2.11 库。
而 libswscale2.11.pc 里则定义了 header和lib的目录位置。
所以问题来了,我明明通过源码的方式安装了,但是还是提示找不到呢。 原来是 pkg-config 寻找 pc文件目录的问题。 更多…