我正在构建一个使用一些Rust库的iOS框架。现在,库被编译为静态库。为了让我能够启用bitcode(Apple app thinning需要这个),需要在启用bitcode的情况下构建Rust库。我相信这需要llvm标志:-fembed-bitcode
。在Cargo有什么办法吗?
答案 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 6和that PR嵌入bitcode嵌入到为iOS编译时生成的每个目标文件是默认行为。