LLVM系列(三)小插曲---Clang的常用命令

预定义宏表:

__LINE__ 当前程序行的行号,表示为十进制整型常量
__FILE__ 当前源文件名,表示字符串型常量
__DATE__转换的日历日期,表示为Mmm dd yyyy 形式的字符串常量,Mmm是由asctime产生的。
TIME 转换的时间,表示"hh:mm:ss"形式的字符串型常量,是有asctime产生的。

Clang常用编译命令:

1. 无选项编译链接
用法:#clang hello.c
作用:将hello.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。编译成功后可以看到生成了一个a.out的文件。在命令行输入./a.out 执行程序。./表示在当前目录,a.out为可执行程序文件名。

2. 选项 -o
用法:#clang hello.c -o hello
作用:将hello.c预处理、汇编、编译并链接形成可执行文件hello.c。-o选项用来指定输出文件的文件名。输入./hello执行程序。

3. 选项 -E
用法:#clang -E hello.c -o hello.i
作用:将hello.c预处理输出hello.i文件。

4. 选项 -S
用法:#clang -S hello.i
作用:将预处理输出文件hello.i汇编成hello.s文件。

5. 选项 -c
用法:#clang -c hello.s
作用:将汇编输出文件hello.s编译输出hello.o文件。

6. 无选项链接
用法:#clang hello.o -o hello
作用:将编译输出文件hello.o链接成最终可执行文件hello。输入./hello执行程序。

如果想直接输入hello就运行,需要把hello复制到目录/usr/bin下

7. 选项-O
用法:#clang -O1 hello.c -o hello
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。输入./hello执行程序。

8.编译使用C++ std库的程序
用法:#clang hello.cpp -o hello -l std c++ 作用:将hello.cpp编译链接成test可执行文件。-l  std  c++指定链接std c++库。

9. 分别编译各个源文件,之后对编译后输出的目标文件链接。 用法:
#clang -c hi.c         // 将hi.c编译成hi.o

#clang -c hello.c    // 将hello.c编译成hello.o

 

<think>好的,我需要帮助用户解决如何安装他们下载的Clang+LLVM 12.0.1的tar.xz文件在Ubuntu 16.04系统上。首先,我得回想一下安装这类压缩包的一般步骤。用户提供的文件名是clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz,看起来是预编译好的二进制包,所以不需要从源码编译,这应该简化了安装过程。 首先,用户可能需要解压这个tar.xz文件。tar.xz通常使用tar命令解压,参数是-J或者使用xz工具先解压再tar。我需要确认正确的解压命令,比如tar -xvf,可能还需要指定解压目录。用户可能不知道需要解压到哪里,通常这类预编译的包可以放在/usr/local或者用户的主目录下,但需要确保路径正确。 然后,解压后的目录结构可能包含bin、lib、include等文件夹,用户需要将这些文件放到系统的相应路径,或者添加到PATH环境变量中。可能需要指导用户如何添加路径到.bashrc或者.profile,这样每次登录后都能直接使用clangllvm命令。 另外,可能需要检查依赖关系。虽然预编译包通常包含所有依赖,但Ubuntu 16.04比较旧,是否有一些基础库需要安装,比如libstdc++或者其他运行时库?可能需要提醒用户安装这些依赖,或者确认他们的系统是否满足要求。 还有权限问题,解压后的文件可能需要使用sudo复制到系统目录,或者用户可以选择安装到主目录下,不需要root权限。需要给出两种方法的步骤,并说明各自的优缺点。 用户可能遇到的问题包括解压失败,路径设置错误,命令找不到等。需要预先想到这些情况,并给出解决方案,比如检查文件完整性,确认解压路径,更新环境变量等。 最后,验证安装是否成功,通过运行clang --version或者llvm-config --version来确认版本是否正确。可能还需要提醒用户如果之前安装过其他版本的Clang/LLVM,如何处理冲突,比如更新替代版本或者调整PATH顺序。 总结起来,步骤应该是:1. 下载文件并验证完整性;2. 解压到目标目录;3. 添加可执行文件路径到环境变量;4. 安装必要依赖;5. 验证安装。需要详细写出每个步骤的具体命令和注意事项,确保用户能够顺利执行。</think>--- ### **一、准备工作** #### **1. 确认系统兼容性** - **系统要求**:确认你的系统是 **64 位 Linux**(Ubuntu 16.04 或兼容版本)。 可通过以下命令检查: ```bash uname -m # 输出应为 x86_64 lsb_release -a # 查看系统版本 ``` #### **2. 安装依赖** - **基础工具**:确保已安装解压工具和必要依赖: ```bash sudo apt update sudo apt install xz-utils tar curl ``` --- ### **二、安装步骤** #### **1. 解压文件** 假设下载文件位于 `~/Downloads` 目录,执行以下步骤: ```bash cd ~/Downloads # 进入下载目录 tar -xf clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz ``` - **参数说明**: - `-x`:解压文件 - `-f`:指定文件名 #### **2. 移动文件到系统目录(推荐方式)** 将解压后的文件夹移动到 `/usr/local`(需管理员权限): ```bash sudo mv clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04 /usr/local/llvm-12.0.1 ``` - **目录说明**: - 路径 `/usr/local/llvm-12.0.1` 是约定俗成的安装位置,可自定义。 #### **3. 配置环境变量** 编辑用户环境配置文件(如 `~/.bashrc` 或 `~/.zshrc`): ```bash nano ~/.bashrc # 或其他 Shell 配置文件 ``` 在文件末尾添加以下内容: ```bash export PATH="/usr/local/llvm-12.0.1/bin:$PATH" export LD_LIBRARY_PATH="/usr/local/llvm-12.0.1/lib:$LD_LIBRARY_PATH" ``` 保存后执行: ```bash source ~/.bashrc # 使配置生效 ``` --- ### **、验证安装** #### **1. 检查命令是否可用** ```bash clang --version # 输出应包含 "clang version 12.0.1" llvm-config --version # 输出应为 12.0.1 ``` #### **2. 检查文件路径** 确认可执行文件位于 `/usr/local/llvm-12.0.1/bin`: ```bash ls /usr/local/llvm-12.0.1/bin # 应看到 clangclang++、llvm-config 等文件 ``` --- ### **四、其他安装方式(可选)** #### **1. 本地安装(无需管理员权限)** 若无法使用 `sudo`,可将文件解压到用户目录(如 `~/llvm-12.0.1`),并更新环境变量: ```bash mv clang+llvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04 ~/llvm-12.0.1 ``` 在 `~/.bashrc` 中添加: ```bash export PATH="$HOME/llvm-12.0.1/bin:$PATH" export LD_LIBRARY_PATH="$HOME/llvm-12.0.1/lib:$LD_LIBRARY_PATH" ``` #### **2. 创建符号链接(简化命令)** 若需全局访问,可为常用工具创建链接: ```bash sudo ln -s /usr/local/llvm-12.0.1/bin/clang /usr/bin/clang-12 sudo ln -s /usr/local/llvm-12.0.1/bin/clang++ /usr/bin/clang++-12 ``` --- ### **五、常见问题** #### **1. 报错“未找到命令”** - **原因**:环境变量未生效或路径配置错误。 - **解决**: ```bash source ~/.bashrc # 重新加载配置 echo $PATH # 检查路径是否包含 LLVM 的 bin 目录 ``` #### **2. 依赖库缺失** - **现象**:运行命令时报错如 `libtinfo.so.5: cannot open shared object file`。 - **解决**:安装缺失库: ```bash sudo apt install libtinfo5 ``` #### **3. 版本冲突** - **现象**:系统已安装其他 LLVM 版本,导致路径冲突。 - **解决**:通过完整路径调用指定版本,例如: ```bash /usr/local/llvm-12.0.1/bin/clang --version ``` --- ### **六、卸载方法** 1. 删除安装目录: ```bash sudo rm -rf /usr/local/llvm-12.0.1 ``` 2. 移除环境变量配置(编辑 `~/.bashrc` 删除相关行)。 3. 删除符号链接(如有): ```bash sudo rm /usr/bin/clang-12 /usr/bin/clang++-12 ``` --- **总结**: 1. 解压文件 → 移动至系统目录 → 配置环境变量 → 验证安装。 2. 若需多版本共存,可通过自定义路径和环境变量管理。 3. 优先检查环境变量和依赖库问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值