是否有可能编译一个完整的PHP堆栈 - 比如Apache,PHP,Postgres和足够多的更常用的库来覆盖百分之九十的网站 - 使用Clang到LLVM位码中?如果是这样,是否有任何关于如何从开箱即用的 Ubuntu 设置开始的说明?
Apache、PHP 和 Postgres 都可以由 Clang 编译,这意味着它们也可以编译成 LLVM 位码。我不能给你具体的步骤来实现这一点,因为它取决于构建系统。无论如何,这涉及将-femit-llvm
标志添加到编译行,并且可能使用 llvm-link
作为链接器。
请注意,至少 PHP 具有内联汇编代码,您的分析器可能会阻塞这些代码。
更新:
使用任意构建系统将代码编译到 LLVM IR 的好工具是 gllvm。简而言之,您只需使用 gclang
/gclang++
而不是gcc/g++
然后在生成的二进制上运行get-bc
。