2014-07-21 50 views
3

我想在將項目編譯爲靜態可執行文件時鏈接ffmpeg的靜態構建。我用下面的命令:如何正確鏈接ffmpeg到靜態構建「g ++ -static」?

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' 

什麼我錯在這裏做什麼?

回答

1

您必須爲靜態構建設置更多的連接符,如-lz。但是,爲什麼不動態鏈接,如果這有效?

+0

您能否提供我必須設置的確切鏈接器?我需要它靜態,因爲我想在不同的機器上使用可執行文件。 – user2212461

2

-lswresample是導致錯誤的缺失標誌

相關問題