2014-12-04 60 views
2

我在不同的体系结构上编译LLVM代码时遇到了问题。目前我无法解决的主要问题是指针大小不同。如何将C++编译为便携式LLVM代码

clang总是将sizeof(void*)优化为目标机器上的实际指针大小。

真的有可能将C++编译为便携式LLVM代码,或者它只是一种营销手段。

+0

我不明白你的问题。你期望'sizeof(void *)'返回什么?它在_all_编译器上返回编译该程序的体系结构上的指针大小。你用_portable LLVM code_是什么意思? – DarkDust 2014-12-04 15:30:55

+2

允许您将C++编译为可移植可执行格式的两种技术是[PNaCl](https://developer.chrome.com/native-client)和[emscripten](http://kripken.github.io/emscripten-现场/)。两者都依赖于LLVM。然而,LLVM本身没有这种功能。 – 2014-12-04 15:34:29

回答

5

LLVM位码并不意味着可跨架构移植。它可以在理论上,但大多不是。 IIRC这个误解是为什么LLVM不再代表'低级虚拟机'。

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