Я пытаюсь скомпилировать библиотеку C, чтобы использовать ее в моем проекте iOS, и я хочу встроить биткод.Биткод и dylib
Я могу успешно создавать статические библиотеки, предназначенные для каждой арки. И эта статическая библиотека содержит биткод (проверяется с помощью otool), но динамическая библиотека не содержит битовый код. Зачем? Не поддерживается ли биткод в dylib?
Библиотека, которую я пытаюсь построить, это 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
Спасибо!
Я не уверен в вашем ответе, что динамические библиотеки не поддерживающий биткод. Я нашел этот ответ, предположив, что он поддерживает биткод: http://stackoverflow.com/a/38125767/2302437. Кроме того, добавление '-fembed-bitcode' значительно увеличивает размер файла, почему? –
@BenMarten Ну, я думаю, что биткод можно было бы поддерживать и в dylib! Но эксперименты, которые я сделал во время ответа, показали, что я не могу извлечь бит-код из dylib. Кроме того, после того, как я попытался заменить liblzma.a на liblzma.dylib, Xcode жаловался, что liblzma.dylib не содержит бит-код. Может, я сделал что-то не так? – Automatic
Если вы хотите проверить биткод, проверьте 'ebcutil': https://github.com/JDevlieghere/LibEBC. (Отказ от ответственности: я являюсь автором библиотеки) – Jonas