Mein Ziel ist es, eine einzelne statische FFmpeg-Binärdatei mit libfdkaac- und x264-Unterstützung für OSX und Linux zu erstellen. Zuerst habe ich versucht, eine unter OSX zu erstellen. Ich folge den Anweisungen im FFmpeg-Web: https://trac.ffmpeg.org/wiki/CompilationGuide/MacOSX
Hier sind die Konfigurationseinstellungen, die ich angewendet habe, um eine statische Binärdatei zu erstellen:
./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
Nach dem Erstellungsprozess beträgt FFmpeg etwa 14 MB, was bedeutet, dass die Bibliotheken von Drittanbietern nicht enthalten sind. Tatsächlich muss eine Verknüpfung zu dynamischen Bibliotheken hergestellt werden, die sich unter befinden /usr/local/lib
. Wenn ich diese dynamischen Bibliotheken entfernt habe, zeigt das FFmpeg einen Fehler wie:
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
Ist es der richtige Weg, alle externen Bibliotheken zu einer einzigen statischen Binärdatei zu machen?
Ich würde mich sehr über Ihre Hilfe freuen!
ldd
Befehl, die dynamischen Bibliotheksabhängigkeiten einer Binärdatei anzuzeigen? Oder nur ein file
Befehl mit Ausgabe, der enthält, ob eine Binärdatei statisch oder dynamisch verknüpft wurde?
--disable-shared --enable-static
eine statische Binärdatei erstellen. Ich denke, es funktioniert unter Linux oder beim Cross-Compilieren für Windows. Es klingt also wie ein Fehler in den ffmpeg-Build-Skripten unter OS X
--enable-static
keine statischen Binärdateien erstellt. Es macht die libav*
von ffmpeg gebaut Bibliotheken (und durch die verwendeten Binärdateien) statisch oder nicht. Ffmpeg verwendet keine statischen Versionen externer Bibliotheken. Was Sie also sehen, ist das Standardverhalten für ffmpeg.