基于LLVM official page,可以根据我的理解进行安装时优化,首先在分发之前编译构建计算机上的字节码,然后在上目标机器,在安装时将字节码转换为本机代码。
这个功能有没有真实的例子?更具体地说,我想知道是否可以采用任意开源C / C ++项目,该项目使用autoconf(即通常由./configure && make && make install
构建和安装)和
./configure && make
方式(例如设置一些环境变量,甚至修改
configure.ac或其他一些autoconf文件),以便它生成
可执行文件和库作为字节代码; make install
以一种特殊的方式,以便像往常一样安装所有文件,
但是将字节代码转换为可执行文件和库的本机代码。答案 0 :(得分:2)
正如@delnan所指出的,一般情况下这是不可能的。 LLVM是一个目标独立的 IR,但它不是可移植的。
有一些尝试构建便携式IR,PNaCl,但这些与LLVM不同。
答案 1 :(得分:1)
LLVM IR是独立于目标的,这意味着它可以在一台机器上生成(编译时)并在另一台机器上转换为字节码(链接时间),它仍然会生成与在第一台机器上相同的字节码,提供您使用相同版本的LLVM具有相同的选项。这并不意味着生成的IR会在所有机器上生成有效的二进制文件。
问题在于ABI在不同系统之间的变化方式。
这篇文章更详细地解决了这些差异: LLVM bitcode cross-platform