在构建要在启用bitcode的应用程序中使用的库时,fat二进制文件中的每个arch都需要使用-fembed-bitcode或仅使用其中一个构建吗?
其中之一是因为bitcode是独立于架构的,只会被复制?
所有这些因为预处理器命令可能会根据架构改变代码(例如NSInteger宽度)?
否则duplicate symbol _llvm.cmdline会排除x86切片?- rdar:// 21884601
我正在建设llvm/clang 3.7bitcode支持(-fembed-bitcode).由于错误,某些模块无法链接:
ld:-bundle和-bitcode_bundle(Xcode设置ENABLE_BITCODE = YES)不能一起使用clang:error:链接器命令失败,退出代码为1(使用-v查看调用)
完整错误输出:
链接CXX共享模块../../lib/BugpointPasses.dylib cd/Volumes/Transcend/dev/src/llvm_37_ios_any_build/tools/bugpoint-passes && /usr/local/Cellar/cmake/2.8.12.2/bin/cmake - E cmake_link_script CMakeFiles/BugpointPasses.dir/link.txt --verbose = 1/usr/bin/c ++ -fembed-bitcode -Os -std = c ++ 11 -stdlib = libc ++ -arch arm64 -mios-version-min = 8.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -pedantic -Wno-long -long -Wnon-virtual-dtor -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk -bundle -Wl,-headerpad_max_install_names -Wl,-dead_strip -Wl,-exported_symbols_list,/ Volumes/Transcend/dev/src/llvm_37_ios_any_build/tools/bugpoint-passes/BugpointPasses.exports -Wl,-flat_namespace -Wl,-undefined -Wl,suppress -o ../../lib/ BugpointPasses.dylib CMakeFiles/BugpointPasses.dir/TestPasses.cpp.o -Wl,-rpath,@ execu table_path /../ lib ld:-bundle和-bitcode_bundle(Xcode设置ENABLE_BITCODE = YES)不能一起使用clang:error:链接器命令失败,退出代码为1(使用-v查看调用)make [2]:*[ lib/BugpointPasses.dylib]错误1 make [1]:* [tools/bugpoint-passes/CMakeFiles/BugpointPasses.dir/all]错误2 make:***[all]错误2 …
我希望Xcode将我的Swift源文件编译为bitcode(IR)而不是Mach-O对象.我知道你可以使用emit-ir标志调用swift编译器,但是将其添加到"Other Swift Flags"对我来说不起作用.该标志设置为初始调用,swiftc但它不会在后续调用中显示为参数swift.结果我得到了Mach-O 64-bit object文件.
对于Objective-C,我可以通过向LTO 添加emit-llvm标志clang或启用LTO 来实现此目的.我应该怎么做Swift?
我正在使用Swift 2.2运行最新的Xcode(7.3).
编辑:我想出了一个解决方法,我用一个附加-emit-bc到参数列表并转发它的脚本替换swift编译器swiftc.但是,将它添加到Xcode中的Swift编译器标志也不起作用.
我已经看到很多参考链接用于找出BITCODE_ENABLE和.dylib框架之间的连接,但我无法得到积极的结果.请任何人帮助我两者之间的确切联系,并提及BITCODE_ENABLEClearly的使用.
我PermissionScope.framework在项目中添加了此文件,并尝试将其归档,但显示以下错误。
无法生成位码捆绑包,因为构建的“ AppPath /PermissionScope.framework/PermissionScope”没有完整的位码。必须从Xcode Archive生成所有用于位代码的框架和dylib或为体系结构arm64 clang安装生成:错误:链接器命令失败,退出代码为1(使用-v查看调用)
请帮助我解决此问题。
我们使用Kotlin在Android和iOS之间共享库.
我们设置了一切,但在iOS上我需要启用Bitcode.经过研究,我找到了解决方案:
kotlin {
targets {
fromPreset(presets.jvm, 'jvm') {
mavenPublication {
artifactId = 'my-lib-name'
}
}
// Switch here to presets.iosArm64 to build library for iPhone device || iosX64 for emulator
fromPreset(presets.iosArm64, 'iOS') {
compilations.main.outputKinds('FRAMEWORK')
compilations.main.extraOpts '-Xembed-bitcode' // for release binaries
compilations.main.extraOpts '-Xembed-bitcode-marker'// for debug binaries
}
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是现在,我有,如果是,我如何在发布和调试二进制文件和特定标志之间分开?我可以简单地添加两个标志没有任何缺点吗?
也许有人可以启发我谢谢
ld:无法重新解析 bitcode 包中的目标文件:'无效的 bitcode 版本(生产者:'902.0.39.2_0' Reader:'900.0.39.2_0')',使用 libLTO 版本 'LLVM 版本 9.0.0,(clang-900.0.0. 39.2)' 架构 arm64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
注意: - 在构建设置中将 Bitcode 启用为No。Apple 拒绝将构建版本上传到 iTunes。
在使用Xcode 11b2提交的构建中,成功上传构建后,几分钟后我收到一封电子邮件,其中包含以下消息:
ITMS-90562: Invalid Bundle - The app submission can not be successfully recompiled from bitcode due to missing symbols during linking. You can try to reproduce and diagnose such issues locally by following the instructions from: https://developer.apple.com/library/archive/technotes/tn2432/_index.html
Run Code Online (Sandbox Code Playgroud)
通过该链接,我可以导出具有位码的临时构建,而在本地没有任何错误,因此似乎并没有太大帮助。
我也尝试过提交带有启用和禁用位代码复选框的构建,尽管有问题的应用程序包括Apple Watch应用程序,并且该平台始终需要位代码,因此可能没有任何实际区别。
有人以前看到过这个,知道如何解决吗?
选择“从位码重建”导出选项时,我无法存档 ipa,出现以下错误
ipatool failed with an exception: #<CmdSpec::NonZeroExitException: $ /Applications/Xcode.app/Contents/Developer/usr/bin/bitcode-build-tool
-v -t /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
-
Run Code Online (Sandbox Code Playgroud)
注意:- 我检查了我所有的依赖框架都是 .xcframework,支持 Bitcode。
有人可以在这里帮助我吗?提前致谢。
我们无法分发使用我们框架的示例应用程序,而我们的用户也不能。在归档并分发到 AppStore 时,应用程序被拒绝并显示以下消息:
Invalid Bundle - One or more dynamic libraries that are referenced by your app are not present in the dylib search path. If your app contains bitcode, bitcode processing may have failed. Because of these errors, this build of your app will not be able to be submitted for review or placed on the App Store.
该框架包含位代码,或者至少BITCODE_GENERATION_MODE = bitcode在我们的 中有一个构建设置.xcconfig,这基本上意味着 Xcode 将向-fembed-bitcode任何 clang 调用添加构建标志。
从这里开始,我们开始使用Ad-Hoc构建进行测试,以加快我们的试错尝试,这在Rebuild from bitcode选择选项时也会失败。管理器显示包含以下内容的弹出窗口: …