我遇到了在不同架构上编译LLVM代码的问题。到目前为止我无法解决的主要问题是指针大小不同。
clang始终将sizeof(void*)
优化为目标计算机上的实际指针大小。
是否真的可以将C ++编译为可移植的LLVM代码,或者它只是一种营销手段。
答案 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的指针也很重要。