실행하려면 ogg123
(ogg vorbis에서 wav 가져오기) 정적 빌드를 가져오거나(찾을 수 없음) 컴파일해야 합니다. Amazon Linux(현재 AWS Lambda 버전과 동일)에서 이것을 시도했습니다.
./configure --disable-shared --enable-static
make LDFLAGS=-lm SHARED=0 CC='gcc -static'
결과 ogg123
파일 크기는 288K이지만 파일을 다른 Amazon Linux에 복사하고 실행하려고 하면 다음과 같은 오류가 발생합니다.
error while loading shared libraries: libvorbisfile.so.3: cannot open shared object file: No such file or directory
답변1
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"에서 실행하는 데 적합해야 합니다.