2012-10-22 87 views
0

我已經編譯ffmpeg的(1.0)與蠑螈配置:如何獲得ffmpeg鏈接到的庫列表(靜態ffmpeg庫)?

./configure --disable-doc --disable-ffplay --disable-ffprobe --disable-ffserver --disable-avdevice --disable-avfilter --disable-pthreads --disable-everything --enable-muxer=flv --enable-encoder=flv --enable-encoder=h263 --disable-mmx --disable-shared --prefix=bin/ --disable-protocols --disable-network --disable-debug --disable-asm --disable-stripping 

它編譯 - 沒有錯誤 - 頭文件和庫(靜態.a)到位。 (特殊的實驗cigwin,實驗gcc,沒有asm選項,並且沒有被ffmpeg平臺定義)(但我已經編譯並測試了它的提升)

現在我嘗試編譯我的應用程序。我得到下一個例外:

../ffmpeg-1.0/bin/lib/libavcodec.a: error: undefined reference to 'exp' 
../ffmpeg-1.0/bin/lib/libavcodec.a: error: undefined reference to 'log' 

我的編譯器編譯行如下所示:

g++ -static -emit-swf -o CloudClient.swf -I../boost/boost_libraries/install-dir/include -I../ffmpeg-1.0/bin/include -L../boost/boost_libraries/install-dir/lib -L../ffmpeg-1.0/bin/lib \ 
    timer.o \ 
    audio_encoder.o \ 
    audio_generator.o \ 
    video_encoder.o \ 
    video_generator_rainbow.o \ 
    simple_synchronizer.o \ 
    multiplexer.o \ 
    transmitter.o \ 
    graph_runner.o \ 
    cloud_client.o \ 
    -pthread \ 
    -lswscale \ 
    -lavutil \ 
    -lavformat \ 
    -lavcodec \ 
    -lboost_system \ 
    -lboost_date_time \ 
    -lboost_thread 

所以你看相當複雜,我已經編譯的所有目標文件,並準備離開......只有一件事 - 這一切鏈接到FFmpeg的

嘗試添加-lm(從升壓編譯的ffmpeg版本條紋) - 沒有任何幫助......

那麼這裏我的問題是 - 如何牛逼o獲得鏈接到(如-lm等)的庫ffmpeg列表?

+0

發現數學庫的位置,並把它添加到庫路徑「-L」和嘗試。 – SparKot

+0

我想你只是把它們放錯了順序。您需要將'-lm'添加到命令行的* end *,而不是開頭。 –

回答

1

如果在Linux中,嘗試「ldd的/路徑/到/ ffmpeg的二進制」

+0

他無法編譯他的應用程序; ldd(猜測加載器依賴項)只列出共享庫,前提是應用程序已經成功編譯。 – SparKot

+0

你的答案可以用於靜態ffmpeg庫嗎? – myWallJSON

+0

你是否用'-static'編譯庫?或者,對於'configure'腳本--enable-static選項。 – Ayub