这个问题困扰了我好几天。
编译并安装ffmpeg之后,我尝试使用它构建一个演示,但它总是失败。
演示是:
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
int main(int argc,char *argv[]) {
av_register_all();
return 1;
}
使用gcc main.c -o main.o
时,会出现错误:undefined reference to 'av_register_all'
使用:gcc main.c -o main.o -lm -ld -lz -lavcodec -lavformat -lavutil
构建,发生另一个错误:/usr/bin/ld: cannot find -ld
我该如何解决这个问题?
答案 0 :(得分:11)
包括在extern" C"阻止可能有效。
extern "C"{
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
}
答案 1 :(得分:2)
gcc filename.c -o outputfilename -lavformat -lavcodec -lavutil -lz -lm -lpthread -I'/usr/local/include' -lswresample
上述命令将有助于正确编译。
答案 2 :(得分:1)
了解this project如何构建示例代码。
Makefile很容易理解。
答案 3 :(得分:1)
如上所述here 图书馆的秩序很重要 所以在你的情况下,以下希望应该有效:
gcc main.c -o main.o -lavformat -lavcodec -lavutil -lz -lm -lpthread
答案 4 :(得分:0)
这对我有用:
gcc <your source code> -o main -lavformat -lavcodec -lavutil -lm -lpthread -I'/usr/local/include' -lswresample