如何正确地将ffmpeg链接到静态构建" g ++ -static"?

时间:2014-07-21 22:39:15

标签: ffmpeg g++ static-libraries static-linking

我想在将项目编译为静态可执行文件时链接ffmpeg的静态构建。我使用以下命令:

g++ -O2 -static -o myBin myBin-myBin.o -lm -lpthread someotherlibraries.a 
/path/to/libavformat.a /path/to/libavcodec.a

但是得到以下错误列表,虽然我使用--disable-libopus配置了ffmpeg:

libavcodec/opusdec.c:376: error: undefined reference to 'swr_is_initialized'
libavcodec/opusdec.c:222: error: undefined reference to 'swr_is_initialized'
libavcodec/opusdec.c:163: error: undefined reference to 'swr_init'
libavcodec/opusdec.c:169: error: undefined reference to 'swr_convert'
libavcodec/opusdec.c:236: error: undefined reference to 'swr_convert'
libavcodec/opusdec.c:117: error: undefined reference to 'swr_convert'
libavcodec/opusdec.c:408: error: undefined reference to 'swr_close'
libavcodec/opusdec.c:557: error: undefined reference to 'swr_close'
libavcodec/opusdec.c:579: error: undefined reference to 'swr_free'
libavcodec/opusdec.c:629: error: undefined reference to 'swr_alloc'

我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

-lswresample是导致错误的缺失标志

答案 1 :(得分:1)

你必须为静态构建设置额外的连接器soch as -lz。但是,为什么不动态链接,如果有效?