参考网站:LLVM系统入门
1 准备
1.1 编写一个c文件,命名为hello.c。
1.2 修改环境变量PATH
(1)vim /etc/profile
(2)添加 export PATH=/root/ollvm/obfuscator-llvm-4.0/build/bin/:$PATH
(3)source /etc/profile
这样可以直接使用clang命令,而无需指定其位置。
2 编译为本机可执行文件
clang hello.c -o hello
文件类型为ELF。
3 编译c文件
可以得到两种格式的IR
(1) 将c文件编译为 LLVM bitcode文件
clang -emit-llvm hello.c -c -o hello.bc
其中.bc格式是llvm的字节码的二进制形式。需要使用llvm-dis来查看,将LLVM位代码转换为人类可读的LLVM程序集。
llvm-dis < hello.bc | less
(2) 将c文件编译为.ll格式
clang -emit-llvm hello.c -S -o hello.ll
其中.ll格式是llvm字节码的文本形式,可以直接使用文本编辑器查看
4 执行
./hello
或者
lli hello.bc
lli是LLVM解释器,它可以直接执行LLVM bitcode文件
5 生成本机程序集
llc是LLVM后端编译器,它将LLVM bitcode转换为本机代码程序文件。
llc hello.bc -o hello.s
hello.s文件类型为ASCII text。
6 将本机程序集组装到程序中
gcc hello.s -o hello.native
7 执行本机代码程序
./hello.native