首先,我只是为了娱乐而做的事情,而不是为了生产。
LLVM的bitcode在某种程度上可以像Java的字节码一样工作,可以跨平台。我认为它应该适用于大多数情况,除非你的代码包含一些内联asm或特殊的东西。我已经成功地在Linux中使用clang
编译了一个简单的hello world程序到LLVM bitcode,并在Windows中使用lli
正确运行它。
但是,我怎样才能以这种方式使用boost_thread等boost库?我可以将bitcode文件与llvm-link
一起打包,它仍然是跨平台的。但是,如果我通过某种方法将bitcode与* .a链接起来(我没有试过这样做,但似乎我可以这样做,即使llvm-ld
已被删除),它可能不再是跨平台的(并成为本机二进制可执行文件)。所以,我想编译boost到LLVM bitcode,以便我可以将boost库链接到我的程序。
如果您认为静态链接会使bitcode变大,您也可以在运行时通过lli <your bitcode> <boost's bitcode>...
我已使用./b2 toolset=clang cxxflags="-emit-llvm -c"
编译了boost。我不确定我是否采取正确的方式。如果没有,有没有办法让我编译升级到bitcodes?
编辑:
上面的命令似乎部分工作。生成的* .o文件是LLVM bitcode,但它将归档为* .a。只需解压缩* .a并使用llvm-link
链接存档中的文件即可。
但,不幸的是,在boost的线程库中有内联asm。所以,它无法运行......