首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bitcode和dylib

Bitcode和dylib
EN

Stack Overflow用户
提问于 2016-05-16 19:59:17
回答 2查看 1.7K关注 0票数 2

我正在尝试编译一个C库,以便在我的iOS项目中使用它,并且我想嵌入bitcode。

我可以成功地构建针对每个拱形的静态库。这些静态库确实包含bitcode (使用otool进行检查),但是动态库不包含bitcode。为什么?是dylib?中不支持的位代码。

我要构建的库是xz。这是剧本

代码语言:javascript
复制
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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-12 17:48:10

看来我不能将bitcode添加到dylibs中。我试着构建了几个dylib,然后使用otool -l path_to_dylib | grep bitcode测试它们是否包含任何bitcode,它们都一无所获。

更多证据:

  • 在Xcode(7.3.1)中,macOS (以前称为OS )目标在构建设置中没有启用bitcode选项
  • App细化的bitcode部分,苹果并没有提到macOS上的比特代码。另外,应用程序细化只在iOS、watchOS和tvOS上提供。

目前我不知道为什么macOS应用程序在构建设置中没有启用bitcode选项。也许是因为Mac不是分发mac应用程序的唯一途径?人们可能会使用USB接口将一个mac应用程序从一个mac应用复制到另一个mac应用程序?

票数 0
EN

Stack Overflow用户

发布于 2016-09-01 18:11:17

我无法通过cmd行工具(otool、file或clang)在我的bitcode启用的动态库中验证bitcode。此外,比较bitcode和非bitcode构建之间的差异,除了文件大小之外,没有显示出任何差异。

有趣的是,当使用动态库时,当我使用非bitcode构建时,在实际的应用程序中启用并存档xcode的动态库将失败:

代码语言:javascript
复制
ld: bitcode bundle could not be generated because '...' was built without full bitcode. All frameworks and dylibs for bitcode must be generated from Xcode Archive or Install build for architecture armv7

当使用启用bitcode构建dylib时,文件大小会大幅度增加,而且xcode也不会在启用bitcode的示例项目存档时失败。所以我很确定bitcode必须包含在动态库中,尽管我们还没有找到通过cmd行工具来验证这一点的方法.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37262262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档