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

Ubuntu系统下Eclipse IDE 4.8.0M4中FFmpeg开发链接器配置求助

解决FFmpeg编译时的未定义引用错误

嘿,我一眼就看出你遇到的是FFmpeg库链接顺序的问题——GCC的链接器是按从左到右的顺序处理库的,依赖其他库的库必须放在被依赖库的后面,不然就会出现这类undefined reference的报错。

核心问题:库链接顺序颠倒

你当前的链接参数把-lavcodec放在了最前面,但libavcodec其实依赖libavutil等底层库,链接器先处理lavcodec时,找不到后续库提供的符号,自然就报错了。正确的FFmpeg库链接顺序得遵循依赖链从高到低的原则,也就是让依赖其他库的库先出现,被依赖的库后出现:

-lavformat -lavcodec -lavfilter -lavdevice -lavutil -lswscale -lswresample -lpostproc -lz -llzma -lrt

举个例子:lavformat(格式处理)依赖lavcodec(编解码),lavcodec又依赖lavutil(工具函数),所以顺序必须是lavformat在前,lavcodec中间,lavutil最后。

额外检查:库路径是否完整

你现在只添加了/home/git/ffmpeg/libavcodec和/home/git/ffmpeg/libavformat的路径,但FFmpeg的其他库(比如libavutil、libswscale这些)都在各自的目录里,得把这些目录都加到链接路径里:

-L/home/git/ffmpeg/libavcodec -L/home/git/ffmpeg/libavformat -L/home/git/ffmpeg/libavutil -L/home/git/ffmpeg/libswscale -L/home/git/ffmpeg/libswresample -L/home/git/ffmpeg/libavfilter -L/home/git/ffmpeg/libavdevice -L/home/git/ffmpeg/libpostproc

如果当初编译FFmpeg时,把所有库都统一放到了/home/git/ffmpeg/lib目录下(很多默认编译会这么做),那直接加-L/home/git/ffmpeg/lib就省事多了。

确认静态库编译状态

你用的是静态库(libavcodec.a),得确保编译FFmpeg时开启了静态库支持。如果/home/git/ffmpeg/libavcodec下只有.so动态库文件,那得重新编译FFmpeg:

cd /home/git/ffmpeg
./configure --enable-static --disable-shared # 加上你需要的其他配置参数
make -j$(nproc) # 用多线程加速编译

Eclipse里的配置调整步骤

打开项目属性→C/C++ Build→Settings→GCC C Linker:

  • Library search path (-L):把所有FFmpeg库所在的目录都加进去,或者直接加统一的/home/git/ffmpeg/lib
  • Libraries (-l):按我给的顺序添加库:avformat、avcodec、avfilter、avdevice、avutil、swscale、swresample、postproc、z、lzma、rt

调整完这些,重新编译项目,那些未定义引用的报错应该就消失啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:45:12