llvm 常见命令

llvm作为一套成熟的编译体系,提供了很多命令用于不同阶段的使用。通过这些命令的组合使用,可以将一个完整的编译过程,拆分成多个步骤。


llvm-as: 将IR文件编译为二进制文件,默认生成后缀名为.bc的文件,也可以使用-o指定输出:

	llvm-as -o hello hello.ll

llvm-dis: 将二进制文件回溯成IR文件,生成.ll后缀的文件

        llvm-dis hello


opt: opt可以作为LLVM的优化器和分析器。如果标明-analyze就是作为分析器使用,如果没有就是作为优化器使用。

当作为分析器时,通常会把分析结果打印到屏幕,当然少数时候也可以有其他目标方式。

当作为优化器时,opt会根据链接的动态库和使用-load选项加载的库做优化。

opt命令的输入可以接受.ll格式和.bc格式的文件。

如果-o没有指定,opt会将结果输出到标准输出。

        opt -S -load=xxx.so < hello.ll > hello.new.ll


llc: 将.ll或.bc文件编译为汇编文件,输出为后缀名.s的文件
        llc hello.ll


lli: 直接运行LLVM的二进制文件。

        lli hello.bc

llvm-link:将多个LLVM的二进制文件合并为一个二进制文件

       llvm-link -o hello hello.bc bye.bc

llvm-ar:创建静态库,用法和ar基本一致。

     值得注意的是llvm-ar会创建一个新的符号表来统一记录静态库中所有的成员,这有助于提升速度。

        llvm-ar r -hello.a hello.bc bye.bc

llvm-nm: 列出LLVM二进制文件或者静态库文件中的符号表。

        llvm-nm hello.a


llvm-diff:对比两个文件的区别,可以用来比较.ll文件和LLVM的二进制文件

        llvm-diff hello1.ll hello2.ll








llvm-nm: 列出LLVM二进制文件或者静态库文件中的符号表。

        llvm-nm hello.a


llvm-diff:对比两个文件的区别,可以用来比较.ll文件和LLVM的二进制文件

        llvm-diff hello1.ll hello2.ll

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值