Make
如何製作 vorbis-tools ogg123 的靜態二進制建構?
為了執行
ogg123
(從 ogg vorbis 獲取 wav),我需要獲取(未找到)或編譯靜態建構。我在 Amazon Linux(與目前 AWS Lambda 相同的版本)上試過這個:./configure --disable-shared --enable-static make LDFLAGS=-lm SHARED=0 CC='gcc -static'
生成的文件大小為288K
ogg123
,但是當我將該文件複製到另一個 Amazon Linux 並嘗試執行時,我得到了error while loading shared libraries: libvorbisfile.so.3: cannot open shared object file: No such file or directory
如果您只想從中解碼
wav
,ogg vorbis
您可以簡單地使用oggdec
實用程序來執行此操作,而不是ogg123
(具有更多依賴項)。要建構 的“靜態”版本
oggdec
,您首先需要建構libogg
和libvorbis
庫的靜態版本,如下所示:#Create staging directory STAGING=$HOME/staging/vorbis-tools mkdir -p $STAGING #Sources SRC=$STAGING/src mkdir -p $SRC #Build artifacts OUT=$STAGING/build mkdir -p $OUT #Build a static version of "libogg" wget downloads.xiph.org/releases/ogg/libogg-1.3.1.tar.xz -qO-|tar -C $SRC -xJ pushd $SRC/libogg*/ ./configure --prefix=$OUT --disable-shared make install popd #Build a static version of "libvorbis" wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.xz -qO-|tar -C $SRC -xJ pushd $SRC/libvorbis*/ ./configure --prefix=$OUT LDFLAGS="-L$OUT/lib" CPPFLAGS="-I$OUT/include" --disable-shared make install popd
現在您可以建構
oggdec
(vorbis-tools),靜態連結到libogg
和libvorbis
:#Build "vorbis-tools" wget downloads.xiph.org/releases/vorbis/vorbis-tools-1.4.0.tar.gz -qO- | tar -C $SRC -xz pushd $SRC/vorbis-tools*/ ./configure LDFLAGS="-L$OUT/lib" CPPFLAGS="-I$OUT/include" make popd
您可以使用ldd來檢查新建構的
oggdec
二進製文件的依賴項列表:ldd $SRC/vorbis-tools*/oggdec/oggdec linux-vdso.so.1 (0x00007ffc85792000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbcba839000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbcba48e000) /lib64/ld-linux-x86-64.so.2 (0x00007fbcbab3a000)
生成的二進製文件並不是真正完全“靜態”的,因為它仍然暴露了對某些系統庫(特別是“libc”和“libm”)的依賴,但這對於在“Amazon Linux”下執行應該沒問題。