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!
lddBefehl, die dynamischen Bibliotheksabhängigkeiten einer Binärdatei anzuzeigen? Oder nur ein fileBefehl mit Ausgabe, der enthält, ob eine Binärdatei statisch oder dynamisch verknüpft wurde?
--disable-shared --enable-staticeine 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-statickeine 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.