繁体   English   中英

gcc:链接外部库

[英]gcc: Linking an External Library

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

运行

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();
}

就是这样

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

您需要包括文件avcodec.h并在gcc的包含路径标志中添加该文件的路径。

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

给出static是因为您尝试使用* .a库而不是* .so(动态)。

使用-lavcodec和现有参数来gcc

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM