You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake项目如何添加libvpx 正确链接启用libvpx的FFmpeg库

链接错误的核心原因

你之前的写法存在两个明确问题:

  • target_link_libraries传入的是目录路径,不是具体的链接目标,链接器无法正常解析
  • 开启libvpx支持的FFmpeg有严格的库依赖链,漏链依赖库、链接顺序错误都会触发undefined reference类链接报错
正确CMake配置流程
  1. 先指定自编译FFmpeg的安装路径

建议配置FFmpeg时通过./configure --prefix=你的自定义安装路径 --enable-libvpx指定独立安装目录,避免和系统自带FFmpeg版本冲突,编译完成后执行make install将头文件、库文件统一归集到该目录后再做CMake配置。

在CMakeLists.txt最开头添加路径配置:

# 替换为你自己的FFmpeg实际安装根目录
set(CUSTOM_FFMPEG_ROOT "/opt/ffmpeg_libvpx" CACHE PATH "Self-compiled FFmpeg install path")
# 引入FFmpeg头文件目录
include_directories(${CUSTOM_FFMPEG_ROOT}/include)
# 添加FFmpeg库搜索路径
link_directories(${CUSTOM_FFMPEG_ROOT}/lib)
  1. 按正确依赖顺序配置链接
    使用GCC类链接器时要注意:被依赖的库需要放在依赖它的库后面,顺序错了也会报链接错误。VP8编码场景需要的链接目标如下,注意不要漏加libvpx和对应的系统依赖库:
# 替换为你自己的可执行文件目标名、源文件列表
add_executable(main main.cpp vp8_encoder.cpp)

target_link_libraries(main
    avcodec
    avformat
    avutil
    swscale
    swresample
    vpx # 对应开启的libvpx VP8编解码库,漏加会直接报VP8相关接口链接错误
    pthread
    dl
    z
)
排错提示

如果配置完成后仍有链接错误,可以在终端执行pkg-config --libs libavcodec libvpx查看当前环境下正确的链接参数,对照补全缺失的依赖库即可。

内容的提问来源于stack exchange,提问作者Santosh Pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 16:01:02