如何在eclipse linux中正确链接ffmpeg项目

时间:2014-01-09 11:48:49

标签: linux eclipse ffmpeg

我使用ffmpeg在linux eclipse上有一个小测试项目。 可以使用命令行

来创建它
g++ -o m_vector -I/usr/include -I/usr/local/include m_vector.cpp -lavformat -lavcodec -lavutil -lm -lz -lva -lpthread

但是在eclipse中链接时我会得到一个很大的错误列表

/home/user/projects/ffmpeg/libavcodec/internal.h:194: undefined reference to `av_rescale_q'
/usr/local/lib/libavcodec.a(mpegvideo.o): In function `update_picture_tables':
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:663: undefined reference to `av_buffer_unref'
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:663: undefined reference to `av_buffer_ref'
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:664: undefined reference to `av_buffer_unref'
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:664: undefined reference to `av_buffer_ref'
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:665: undefined reference to `av_buffer_unref'
/home/user/projects/ffmpeg/libavcodec/mpegvideo.c:665: undefined reference to `av_buffer_ref'

等等

我在项目中找到了所需的库,我使用了“extern c”。我的项目也知道所需的包含。挖掘互联网没有给出答案。

3 个答案:

答案 0 :(得分:0)

将在path_to_gcc / usr / lib中搜索库。希望你没有那里的图书馆。添加-L$path-to-libraries

答案 1 :(得分:0)

交换您要链接的库的顺序,一个取决于另一个。最依赖的那个必须是最后一个,在本例中是libavutil。

答案 2 :(得分:0)

Ubuntu不同的Windows操作系统。
Ubuntu排序lib,所以你可以像这样添加lib:
-lavdevice -lavformat -lavcodec -lavutil -lswscale -lavfilter -lpthread -lz -lm -lswresample
添加完成后。如果您有错误:undefined reference to vaCreateBuffer...那么您应该重建ffmpeg并禁用-lva lib。
示例:您内置:https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
将线路替换为:
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig"
./configure \  
--prefix="$HOME/ffmpeg_build" \  
--pkg-config-flags="--static" \  
--extra-cflags="-I$HOME/ffmpeg_build/include" \  
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \  
--bindir="$HOME/bin" \  
--disable-vaapi
我不构建libx264,libx265,libfdk-aac ..... b / c我不需要。如果您需要,您可以建立。
行代码:--disable-vaapi禁用-lva lib。