如何将C ++编译为可移植的LLVM代码

时间:2014-12-04 15:23:45

标签: c++ clang llvm

我遇到了在不同架构上编译LLVM代码的问题。到目前为止我无法解决的主要问题是指针大小不同。

clang始终将sizeof(void*)优化为目标计算机上的实际指针大小。

是否真的可以将C ++编译为可移植的LLVM代码,或者它只是一种营销手段。

2 个答案:

答案 0 :(得分:5)

LLVM bitcode不能跨架构移植。它可以是理论上的,但大部分都不是。 IIRC这种误解是LLVM不再代表“低级虚拟机”的原因。

Google Native Client通过为所有平台提供相同的目标ABI,然后将该ABI转换为底层平台ABI,实现了可移植性。

答案 1 :(得分:1)

这是一个常见问题:http://llvm.org/docs/FAQ.html#can-i-compile-c-or-c-code-to-platform-independent-llvm-bitcode。除此之外,Magnus Hoff关于PNaCl和emscripten的指针也很重要。