问题标签 [bitcode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
117458 浏览

c - 如何使 clang 编译为 llvm IR

我希望 clang 将我的 C/C++ 代码编译为 LLVM 位码,而不是二进制可执行文件。我怎样才能做到这一点?

如果我有 LLVM 位码,如何进一步将其编译为二进制可执行文件?

在编译为二进制可执行文件之前,我想将一些我自己的代码添加到 LLVM 位码。

0 投票
1 回答
7318 浏览

c++ - 如何生成 LLVM 位码

我想生成文档中写的位码文件(.bc):

你好ç

然后

运行代码,但我有奇怪的输出:

问题是什么。为什么它不起作用?

0 投票
6 回答
130647 浏览

ios - ENABLE_BITCODE 在 xcode 7 中做了什么?

我对嵌入式位码术语有疑问。
什么是嵌入式位码?
何时启用,ENABLE_BITCODE在新的 Xcode 中?在 Xcode 7 中
启用时二进制文件会发生什么?ENABLE_BITCODE

0 投票
1 回答
380 浏览

xcode - 术语“位码”是什么意思?

更新到 Apple 最新最好的 Xcode 7.0 测试版后,我注意到在一些警告中使用了“位码”一词。

术语“位码”是什么意思?

0 投票
8 回答
184659 浏览

xcode - iOS 9 中的新警告:“所有位码都将被丢弃”

我的应用中有关于 Google 框架的新警告:

(空):紧急:所有位码都将被删除,因为 '/Users/myname/Library/Mobile Documents/com~apple~CloudDocs/foldername/appname/GoogleMobileAds.framework/GoogleMobileAds(GADSlot+AdEvents.o)' 是在没有位码的情况下构建的. 您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。注意:这将是未来的错误。

Xcode 7 给了我大约 204 个关于这个相同概念的警告,我无法解决这个问题。另外,我在从我的应用程序访问网络时遇到问题。这是来自调试区域的错误:

-canOpenURL:URL 失败:“kindle://home” - 错误:“此应用不允许查询方案 kindle”

所有这些问题在 iOS 8 中都不存在。

0 投票
2 回答
20221 浏览

ios - -fembed-bitcode 在 6.0 之前的 iOS 版本上不受支持

最近我下载了 xcode 7 beta 并面临错误:

-fembed-bitcode 在 6.0 之前的 iOS 版本上不受支持

在不更改部署目标的情况下,是否有任何解决方法可以解决此问题?

提前致谢。

0 投票
2 回答
529 浏览

swift - 没有头文件的闭源(即预编译)Swift 库如何工作?

在 C、C++ 和 Objective-C 中,您可以将可执行文件的一部分编译成它自己的“目标文件”,并通过包含“头文件”从任何其他代码中使用它(和/或包含多个目标文件的库)。尽管有高度模板化的 C++ 代码,但“标头”通常只包含验证调用代码正确性所需的声明(并协助 IDE 进行自动完成等)。

但是 Swift 没有头文件。

现在,显然目前不可能制作一个 Swift 静态库,但是在未来,如果 Swift 没有标头,想要使用“新”源代码中的一些现有预编译代码,这种情况将如何工作?

它会像 [I infer] Java 必须如何工作,编译后的表单可以被内省到足以让编译器验证它是否被正确使用?除了它的中间表示之外,Bitcode 是否还提供了保留此类元数据的必要“协议”?

如果 Apple 将 Cocoa 移植到 Swift(并保持其封闭源代码),那么它将如何“导入”到 Swift 应用程序中?

虽然,实际上,这个问题与“封闭源代码”本身无关,而是试图理解Swift 中编译单元的边界。基于Go 语言的一个类似问题,我的这里可以改写为:你可以链接到没有源代码的预编译 Swift 库吗?

0 投票
7 回答
182265 浏览

ios - Xcode 构建选项“启用位码”的影响是/否

昨天我发现了大量关于 parse.com 库的警告:

紧急:所有位码都将被删除,因为 '[path]/Parse.framework/Parse(PFAnalytics.o)' 是在没有位码的情况下构建的。您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。注意:这将是未来的错误。

我知道我可以用这个答案删除这些警告,但现在想知道它是否会对 AppStore 提交和/或我的应用程序的实际性能产生任何负面影响。

Xcode 通知您有关位码的信息

激活此设置表示目标或项目应在编译期间为支持它的平台和架构生成位码。对于存档构建,将在链接的二进制文件中生成位码以提交到应用商店。对于其他构建,编译器和链接器将检查代码是否符合生成位码的要求,但不会生成实际的位码。[ENABLE_BITCODE]

但我没有从这篇文章中得到任何真正有用的信息。

  • 我可以使用链接的答案来规避问题而不会产生任何负面影响并且不会影响未来的 AppStore 提交吗?
  • 实际做了什么ENABLE_BITCODE,将来会是非可选要求吗?
  • 如果我启用/禁用它会对性能产生影响吗?
0 投票
6 回答
44739 浏览

c - iOS 库到 BitCode

我最近下载了 Xcode 7 beta,Xcode 抱怨我的一些 C 库没有被编译成 BitCode。我将如何告诉 Clang 生成与 iOS 兼容的 BitCode?我在 stackoverflow 上看到过类似的答案,但我不知道它们是否适用于为 iOS 生成 BitCode 库。

编辑:

我正在使用正确的设置 -fembed-bitcode,但是当我尝试存档时,我收到错误:ld: warning: ignoring file XXXX/XXXX, file is built for archive which is not the architecture is linked (arm64). 当我使用 -fembed-bitcode-marker 时,我可以存档,但我收到错误:无法生成完整的位码包,因为 XX/XX 仅使用位码标记构建。该库必须从启用位码的 Xcode 归档生成中生成。

关于出了什么问题的任何想法?该库正在成功编译,但它不允许我存档。我创建了一个简单的 add 函数并将其放入库中,我得到了相同的症状,所以它不是我正在编译的库。

编辑 2:您必须使用 bitcode 构建 arm64 和 armv7 版本并将它们一起 lipo。归档时使用位码并不会消除对胖库的需求。来源:链接

0 投票
2 回答
1775 浏览

ld - Xcode 7:-weak_library 和 -bitcode_bundle 不能一起使用

使用 Xcode7 部署到 iPhone 和 Apple Watch 时,出现以下错误:

ld: -weak_library 和 -bitcode_bundle (Xcode 设置 ENABLE_BITCODE=YES) 不能一起使用

想请问如何最好地解决这个问题?

跟进:Apple Watch 需要启用位码的库,基于iOS 9 中的新警告-> 我们可能必须为所有库启用位码..