- 编译平台:Ubuntu16.04
- 编译方法:直接从GitHub仓库克隆工程到本地进行编译
- github地址:https://github.com/llvm/llvm-project
- gitee地址:https://gitee.com/mirrors/LLVM
安装依赖
-
gcc/g++ sudo apt-get install g++
-
gnu make sudo apt-get install make
-
cmake sudo apt-get install cmake
-
ninja sudo apt install ninja-build
安装
下载
git clone https://github.com/llvm/llvm-project.git
加速:
git clone https://github.com.cnpmjs.org/llvm/llvm-project.git
版本
cd llvm-project
git tag
选择控制台输出的相应版本
git show llvmorg-13.0.1
将控制台输出的commit对应的编号,使用reset回退到相应版本
git reset --hard ef32c611aa214dea855364efd7ba451ec5ec3f74
编译
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt" -G Ninja ../llvm
cmake -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt" -G Ninja ../llvm
使用cmake编译build工程,选择ninja方式建立文件,额外编译clang、clang-tools-extra和compiler-rt项目 在build过程中,可能出现一些not found的提示信息,只要没有error,无视warning
ninja
ninja install
完成工程构建后,输入clang -v验证是否成功
报错及处理
1. 不要用make,又慢又错
2. gcc/g++版本
在cmake过程中,可能提示gcc版本过低或者g++: not found
- 更新源
sudo apt update
sudo apt upgrade
- 安装多个版本的编译器
sudo apt install build-essential
sudo apt -y install gcc-7 gcc-8 g++-7 g++-8
- 查看版本
ls /usr/bin/gcc*
ls /usr/bin/g++*
- 创建备选方案,后面整数代表优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 7
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8
- 如果报错
update-alternatives: error: alternative g++ can't be slave of gcc: it is a master alternative ,将gcc和g++一起加sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
- 设置备选方案
sudo update-alternatives --config gcc
sudo update-alternatives --config g++
3. 增加虚拟内存swap
fallocate -l 8G /swapfile
mkswap /swapfile
swapon /swapfile
vim /etc/fstab
/swapfile none swap sw 0 0
参考
- https://blog.csdn.net/weixin_43404388/article/details/114049088?pm=1001.2014.3001.5506
- https://zhuanlan.zhihu.com/p/102028114
- https://www.cnblogs.com/xdblog/p/15789030.html
- https://blog.csdn.net/weixin_43693967/article/details/123719406
|