一个gcc奇怪的ld错误在编译一些ffmpeg应用程序时,找不到libvorbisenc包

时间:2016-05-08 04:10:43

标签: c linux gcc ffmpeg

我关注ffmpeg tuorial,并通过ppa

安装ffmpeg

但是当我编译tuorial02.c时,我得到了gcc错误:

  

/ usr / bin / ld:/opt/ffmpeg/lib//libavcodec.a(libvorbisenc.o):对符号'vorbis_encode_setup_vbr'的未定义引用

     

// usr / lib / x86_64-linux-gnu / libvorbisenc.so.2:添加符号时出错:命令行中缺少DSO   collect2:错误:ld返回1退出状态

我的编译命令是:

gcc -I /opt/ffmpeg/include/ -L /opt/ffmpeg/lib/  -o tutorial02 tutorial02.c -lavformat -lavcodec -lswscale `sdl-config --cflags --libs`  -lpthread -lz -lm -ldl

我搜索了几个小时的原因。我无法解决这个问题。任何人都可以帮助我吗?

已添加我已将-lvorbisenc添加到最后。错误是找不到lib。和libvorivisenc2已经安装。所以这个问题不是Strange linking error: DSO missing from command line

的重复

我的操作系统是Linux薄荷17.3

1 个答案:

答案 0 :(得分:1)

错误告诉您静态库str()引用libvorbisenc中的符号,但libvorbisenc未在您的链接命令中显式显示(尽管它确实在链接命令中找到了来自另一个共享库的好候选者)。您需要将libavcodec.a-lvorbisenc明确添加到命令行。

(较旧版本的binutils会让你在这种情况下隐式引入共享库;但是,更新版本的binutils更严格。)