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

Ubuntu18.04下CMake构建FFmpeg C++项目报错找不到-lpkgcfg_lib_LIBAV_stdc++

错误原因

你遇到的链接错误是Ubuntu 18.04自带的CMake 3.10版本对静态库pkg-config文件的私有依赖解析存在bug导致的:你编译FFmpeg时加了--pkg-config-flags="--static"参数,生成的FFmpeg相关pc文件中包含了libstdc++、libgcc_s等系统标准库依赖,旧版本CMake会把这些依赖当成需要通过pkgconfig查找的第三方库,找不到就会标记为NOTFOUND,导致链接失败。


解决方案

方案一:修改CMakeLists.txt适配旧版本CMake(推荐,无需重新编译FFmpeg)

无需改动FFmpeg配置,直接修改项目CMakeLists.txt即可修复bug:

cmake_minimum_required(VERSION 3.10)

project(xsplay)

find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBAV REQUIRED IMPORTED_TARGET
    libavdevice
    libavfilter
    libavformat
    libavcodec
    libswresample
    libswscale
    libavutil
)

# 新增:修复旧版本CMake解析静态pkgconfig文件的bug,手动补充系统标准库依赖
set_target_properties(PkgConfig::LIBAV PROPERTIES
    INTERFACE_COMPILE_OPTIONS "${LIBAV_CFLAGS_OTHER}"
    INTERFACE_LINK_LIBRARIES "${LIBAV_LDFLAGS_OTHER};stdc++;gcc_s;gcc;pthread"
)

add_executable(${PROJECT_NAME}
    main.cpp
)

target_link_libraries(${PROJECT_NAME}
    PkgConfig::LIBAV
)

方案二:不使用IMPORTED_TARGET写法(兼容性更好)

如果方案一仍不生效,可以换成更适配旧版本CMake的手动配置写法:

cmake_minimum_required(VERSION 3.10)
project(xsplay)

find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBAV REQUIRED
    libavdevice
    libavfilter
    libavformat
    libavcodec
    libswresample
    libswscale
    libavutil
)

include_directories(${LIBAV_INCLUDE_DIRS})
link_directories(${LIBAV_LIBRARY_DIRS})

add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${LIBAV_LIBRARIES} pthread stdc++)

方案三:重新编译FFmpeg移除静态标记(适合不需要静态链接FFmpeg的场景)

如果不需要静态链接FFmpeg到你的项目,可以重新编译FFmpeg,去掉配置参数里的--pkg-config-flags="--static"即可,生成的pc文件不会携带额外的静态依赖,CMake可以正常解析。


编译注意事项

执行cmake命令前,需要先导出你自行编译的FFmpeg的pkgconfig路径,否则CMake会优先找到系统自带的旧版本FFmpeg:

# 清空build目录旧缓存
rm -rf build && mkdir build && cd build
# 导入自定义FFmpeg的pkgconfig路径后执行cmake
PKG_CONFIG_PATH=$HOME/ffmpeg_build/lib/pkgconfig cmake ..
# 编译
make

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:45:01