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

### 关于虚拟机上配置 LLVM #### 安装准备 在虚拟机中的 Ubuntu 20.04 上安装 LLVM 需要先获取源码并通过 CMake 工具进行编译。为了确保顺利编译,建议预先设置足够的虚拟内存以及磁盘空间[^1]。 #### 获取 LLVM 源码 可以通过 Git 下载 LLVM 的最新版本源码库: ```bash git clone https://github.com/llvm/llvm-project.git cd llvm-project ``` #### 编译环境搭建 使用 CMake 构建工具来配置编译选项。以下是推荐的命令序列: 1. 创建构建目录并进入该目录: ```bash mkdir build && cd build ``` 2. 运行 CMake 命令以指定目标路径和其他必要参数: ```bash cmake -G Ninja \ -S ../llvm \ -B . \ -DLLVM_ENABLE_PROJECTS="clang;lld" \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/local/llvm \ -DLLVM_TARGETS_TO_BUILD="X86" ``` 此处 `-DLLVM_ENABLE_PROJECTS` 参数指定了同时编译 Clang 和 lld 组件;`-DCMAKE_INSTALL_PREFIX` 设置了最终安装的目标位置;而 `-DLLVM_TARGETS_TO_BUILD` 则限定了仅针对 X86 平台生成支持代码[^3]。 3. 执行实际编译过程: ```bash ninja ``` 4. 如果一切正常,则可以继续完成安装步骤: ```bash sudo ninja install ``` #### 解决常见问题 - **虚拟内存不足**: 当运行 `ninja` 或者 `make` 时可能会遇到因 RAM 不足而导致失败的情况。此时可通过调整交换文件大小或者直接增加物理内存分配量解决此问题。 - **磁盘容量不够**: 若发现剩余存储不足以容纳整个编译产物(通常超过 10 GB),则需考虑扩充虚拟硬盘尺寸。一种简便方式是利用 GParted 图形界面工具来进行在线分区调整[^4]。 #### 测试验证 最后一步是对新安装好的 LLVM 系统做基本功能检测。打开终端输入以下指令查看其版本信息确认无误即可认为成功部署完毕: ```bash /usr/local/llvm/bin/clang --version ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值