pkg-config无法找到源码编译的ffmpeg4.5库该如何解决?
问题根因说明
- 你之前执行的
export命令仅对当前终端会话生效,打开新终端、切换用户或者重启后配置会失效,和你执行的ldconfig -v没有关联,ldconfig仅负责动态链接库的路径检索,不会修改pkg-config的配置。 - 你执行
pkg-config --variable=pc_path pkg-config输出的是pkg-config的默认系统检索路径,不包含你手动配置的PKG_CONFIG_PATH自定义路径,属于正常现象。
解决方案
前置检查
首先确认你源码编译的ffmpeg 4.5已生成.pc配置文件,执行命令:
ls /home/xxx/ffmpeg_build/lib/pkgconfig | grep libavcodec.pc
如果无输出,说明编译ffmpeg时未开启pc文件生成,需要重新编译ffmpeg,编译参数加上--enable-pc-files,完成安装后再执行后续操作。
1. 临时生效(仅当前终端窗口可用)
直接执行命令将自定义路径前置到PKG_CONFIG_PATH:
export PKG_CONFIG_PATH=/home/xxx/ffmpeg_build/lib/pkgconfig:$PKG_CONFIG_PATH
执行完成后可通过以下命令验证是否生效:
# 查看ffmpeg关联库版本,输出应为4.5对应的版本号 pkg-config --modversion libavcodec # 查看PKG_CONFIG_PATH配置,第一栏应为你的自定义路径 echo $PKG_CONFIG_PATH
2. 永久生效(对当前用户所有终端生效)
将环境变量写入shell配置文件持久化:
- 如果你使用bash,执行
nano ~/.bashrc打开配置文件;如果使用zsh,执行nano ~/.zshrc - 在文件末尾添加以下内容:
export PKG_CONFIG_PATH=/home/xxx/ffmpeg_build/lib/pkgconfig:$PKG_CONFIG_PATH
- 保存退出后执行
source ~/.bashrc(对应你使用的shell类型调整命令)让配置立即生效
特殊场景用法
如果仅单次编译需要调用自定义版本ffmpeg,可以直接在命令前指定PKG_CONFIG_PATH参数,无需修改全局配置:
PKG_CONFIG_PATH=/home/xxx/ffmpeg_build/lib/pkgconfig:$PKG_CONFIG_PATH pkg-config --libs --cflags ffmpeg
内容的提问来源于stack exchange,提问作者Jeoker
相关产品推荐
相关产品推荐

