在LLVM-IR中考虑您好世界
@.str = internal constant [14 x i8] c"hello, world\0A\00"
declare i32 @printf(i8*, ...)
define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
%tmp1 = getelementptr [14 x i8], [14 x i8]* @.str, i32 0, i32 0
%tmp2 = call i32 (i8*, ...) @printf( i8* %tmp1 ) nounwind
ret i32 0
}
当我也没有从锈启动llc
进程时:
use std::process::Command;
fn main() {
Command::new("/usr/lib/llvm-8/bin/llc")
.env_clear()
.arg("test.bc")
.arg("-o")
.arg("test.s")
.output()
.expect("failed to execute process");
}
我无法将生成的test.s
与gcc gcc test.s -no-pie -o test
链接:
/ usr / bin / ld:/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crt1.o:在函数{{1}中}主要的
collect2:错误:ld返回1退出状态
但是当我直接在终端上运行_start':
时:
(.text+0x20): undefined reference to
llc
一切正常。
有人知道一些细节吗?