我想编译一个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