我想使用自动工具构建系统将软件编译为 LLVM 位码;也就是说,我希望最后获得的可执行文件是 LLVM 位码,而不是实际的机器码。
(目标是能够在整个程序上运行 LLVM 位码分析工具。)
我已经尝试指定脚本CC="clang -emit-llvm -use-gold-plugins"
和变体configure
,但无济于事。总是有问题(例如,包构建.a
静态库,链接器拒绝)。
在我看来,正确的做法是 LLVM 位码应该是交叉编译目标。设置--host=
,但没有这样的标准目标(即使 Knuth 的 MMIX 有一个目标)。
到目前为止,我已经使用了 kludges,例如手动编译CC="clang -emit-llvm -use-gold-plugins"
和运行链接线(使用llvm-ld
or )。llvm-link
这适用于简单的包,例如grep
.
我想要一种健壮的方法,并且可以与大多数(如果不是全部)配置脚本一起使用,包括当有中间.a
文件或中间目标时。