我想編譯一個C庫在我的iOS項目中使用它,並且我想嵌入位碼。位碼和dylib
我可以成功構建針對每個拱門的靜態庫。這些靜態庫確實包含位碼(使用otool進行檢查),但動態庫不包含位碼。爲什麼? 是否在dylib中不支持bitcode?
我試圖建立的庫是xz。這裏是腳本
build_iOS()
{
ARCH=$1
if [ $ARCH == "i386" ] || [ $ARCH == "x86_64" ];
then
SDKROOT="$(xcodebuild -version -sdk iphonesimulator | grep -E '^Path' | sed 's/Path: //')"
else
SDKROOT="$(xcodebuild -version -sdk iphoneos | grep -E '^Path' | sed 's/Path: //')"
fi
export CC="$(xcrun -sdk iphoneos -find clang)"
export CFLAGS="-fembed-bitcode -isysroot $SDKROOT -arch ${ARCH} -miphoneos-version-min=9.0"
export LDFLAGS="-arch ${ARCH} -isysroot $SDKROOT"
if [ $ARCH == "i386" ] || [ $ARCH == "x86_64" ];
then
./configure --prefix=$XZPATH/build/iOS/$ARCH --host=i686-apple-darwin11 --disable-static --enable-shared
else
./configure --prefix=$XZPATH/build/iOS/$ARCH --host=arm-apple-darwin --disable-static --enable-shared
fi
make && make install && make clean
}
build_iOS i386
build_iOS x86_64
build_iOS armv7
build_iOS armv7s
build_iOS arm64
謝謝!
我不確定你的答案,那個動態庫不會支持位碼。我發現這個答案,表明它支持bitcode:http://stackoverflow.com/a/38125767/2302437。同時增加'-fembed-bitcode'會增加文件大小,爲什麼? –
@BenMarten嗯,我認爲bitcode也可以在dylib中支持!但是我在答案時所做的實驗表明,我無法從dylib中提取位代碼。另外,在我試圖用liblzma.dylib替換liblzma.a後,Xcode抱怨說liblzma.dylib不包含位代碼。也許我做錯了什麼? – Automatic
如果你想檢查位碼,看看'ebcutil':https://github.com/JDevlieghere/LibEBC。 (免責聲明:我是圖書館的作者) – Jonas