我想在将项目编译为静态可执行文件时链接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'
我在这里做错了什么?
答案 0 :(得分:2)
-lswresample是导致错误的缺失标志
答案 1 :(得分:1)
你必须为静态构建设置额外的连接器soch as -lz。但是,为什么不动态链接,如果有效?