在iOS目标货物构建中启用Bitcode输出?

时间:2016-07-20 07:33:51

标签: ios rust rust-cargo

我正在构建一个使用一些Rust库的iOS框架。现在,库被编译为静态库。为了让我能够启用bitcode(Apple app thinning需要这个),需要在启用bitcode的情况下构建Rust库。我相信这需要llvm标志:-fembed-bitcode。在Cargo有什么办法吗?

3 个答案:

答案 0 :(得分:3)

您可以通过设置RUSTFLAGS environment variable告诉货物将您想要的任何参数传递给Rust编译器。 Rustc编译器有一个标志-C llvm-args=val,可用于将其他参数传递给llvm。

因此,在您的情况下,您可以致电:

RUSTFLAGS="-C llvm-args=\"-fembed-bitcode\"" cargo build

答案 1 :(得分:3)

我怀疑创建与Apple的bitcode格式兼容的二进制文件的问题需要直接修改Rust编译器。 Here's a recent link I found讨论这个问题。该回购的作者将是在iOS问题上联系的好资源。

将会出现多个技术问题,但最基本的是生成与iOS预期格式相同的bitcode。通过使用Apple在clang中使用的相同LLVM构建自定义rustc,可以临时解决该问题。

答案 2 :(得分:0)

big update to LLVM 6that PR嵌入bitcode嵌入到为iOS编译时生成的每个目标文件是默认行为