私の目標は、OSXとLinuxのlibfdkaacとx264をサポートする単一の静的FFmpegバイナリを構築することです。まず、OSXでビルドしようとしました。FFmpegWebの指示に従います:https : //trac.ffmpeg.org/wiki/CompilationGuide/MacOSX
以下は、静的バイナリを構築するために適用した構成設定です。
./configure pkg_config='pkg-config --static' --prefix=/usr/local --extra-version=ntd_20150126 --disable-shared --enable-static --enable-gpl --enable-pthreads --enable-nonfree --enable-fontconfig --enable-libfreetype --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-filters --enable-runtime-cpudetect
ビルド後のFFmpegは約14Mbです。これは、サードパーティのライブラリが含まれていないことを意味します。実際、にある動的ライブラリにリンクする必要があり/usr/local/lib
ます。これらの動的ライブラリを削除すると、FFmpegに次のようなエラーが表示されます。
dyld: Library not loaded: /usr/local/lib/libSDL-1.2.0.dylib
Referenced from: /usr/local/bin/ffmpeg
Reason: image not found
Trace/BPT trap: 5
すべての外部ライブラリを単一の静的バイナリにするのは正しい方法ですか?
よろしくお願いします!
ldd
バイナリの動的ライブラリの依存関係を表示するコマンドはありませんか?またはfile
、バイナリが静的にリンクされたか動的にリンクされたかを含む出力を持つコマンドだけですか?
--disable-shared --enable-static
静的なバイナリを作成する必要があります。Linuxで、またはWindows用にクロスコンパイルするときに、そうなると思います。OS Xのffmpegビルドスクリプトのバグのように聞こえる
--enable-static
静的なバイナリは作成しません。これは、libav*
ffmpegによってビルドされた(およびバイナリによって使用される)ライブラリを静的にするかどうかを指定します。ffmpegに外部ライブラリの静的バージョンを使用させません。したがって、表示されているのはffmpegの標準的な動作です。