gcc:链接外部库

时间:2014-03-14 21:20:35

标签: c++ c gcc compiler-construction

在program.c中,我想使用一种方法' avcodec_register_all()'在libavcodec / avcodec.h中定义。

正在运行

gcc program.c -L$HOME/ffmpeg/lib/libavfilter.a -L$HOME/ffmpeg/lib/libavcodec.a

给我一​​个错误

/tmp/ccNeQywU.o: In function `main':
program.c:(.text+0x3f): undefined reference to `avcodec_register_all'
collect2: ld returned 1 exit status

拼写正确且定义了功能。为什么会这样?

program.c

#include <stdio.h>

int main (int args, char *argv[])
{
 avcodec_register_all();
}

3 个答案:

答案 0 :(得分:5)

就像这样

gcc -static -lavfilter -lavcodec -L/HOME/ffmpeg/lib/

您需要包含文件avcodec.h,并将包含路径标记中该文件的路径添加到gcc。

gcc -static -lavfilter -lavcodec -L$HOME/ffmpeg/lib/ -I$HOME/ffmpeg/include

静态是因为你试图使用* .a库而不是* .so(动态)。

答案 1 :(得分:0)

-lavcodec与现有参数一起使用到gcc

答案 2 :(得分:0)

其中一个原因可能是函数avcodec_register_all()是在C ++文件中定义的。它应该在extern "C"中定义为avcodec.h,并且应该使用正确的avcodec.h编译库。