CentOS 7 的软件源比较老,很多工具都需要自己编译,这里记录一下我的C++开发工具链的配置,安装路径都在 ${HOME}/tools
1. Cmake
直接用 yum
安装的 Cmake 还是 2.8 的版本,很多软件都编译不了,所以得安装一个新版本的 Cmake,可以直接使用官网提供的二进制文件,毕竟自己编译还是蛮麻烦的。下载地址是:https://cmake.org/download/ ,下载 cmake-3.26.4-linux-x86_64.sh
,然后执行这个脚本就会生成一个 Cmake 的文件夹,然后把这个文件夹移动到 tools
文件夹然后把 bin
目录添加的环境变量中,就算安装完成了。
export PATH="${PATH}:${HOME}/tools/cmake/bin"
2. GCC
CentOS 自带的 GCC 版本也非常旧,很多项目编译不了,比如 clangd
。GCC 可以自己编译一个高版本,但是这样需要挺长时间太麻烦的,可以直接使用 centos-release-scl
来安装
yum install centos-release-scl
yum install devtoolset-8
这样就安装了 gcc8.x.x
的版本,如果需要安装其他版本就把 devtoolset-8
改成其他的
devtoolset-3对应gcc4.x.x版本
devtoolset-4对应gcc5.x.x版本
devtoolset-6对应gcc6.x.x版本
devtoolset-7对应gcc7.x.x版本
devtoolset-8对应gcc8.x.x版本
devtoolset-9对应gcc9.x.x版本
devtoolset-10对应gcc10.x.x版本
如果通过这条命令就可以激活对应的 GCC 版本了
scl enable devtoolset-8 bash
3. Clangd
Clangd是一个代码跳转和自动补全的工具,配合 vs code 非常好用,比官方的那个C/C++插件快多了,Clangd 在 CentOS 7 上直接使用二进制版本安装是运行不了的,会提示 libc.so
版本太低,这个就必须得自己编译一个了,如果你已经安装前面的升级了 cmake
和 gcc
就可以直接编译了。这个编译需要挺长时间的
git clone --depth=1 https://github.com/llvm/llvm-project.git
cd llvm-project
mkdir build && cd build
cmake -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -DCMAKE_INSTALL_PREFIX=~/tools/llvm -DCMAKE_BUILD_TYPE=Release ../llvm
make -j 16
make install
4. Git
CentOS 7 自带的那个版本太低了,好多功能都没有,得自己添加源升级一下
sudo yum -y install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
sudo yum install git
5. Bear
之前安装的 Clangd 依赖一个 compile_commands.json
文件来索引,没有这个文件是不能自动补全的,Bear 可以根据根据编译命令自动生成这个 compile_commands.json
文件,不过最新版的 Bear 引入 gRPC,依赖太多了不好编译,建议使用 2.4.4
版本。
git clone https://github.com/rizsotto/Bear.git
cd Bear
git checkout 2.4.4
makedir build
cd build
cmake -DENABLE_UNIT_TESTS=OFF -DENABLE_FUNC_TESTS=OFF -DCMAKE_PREFIX_PATH=/usr/local -DCMAKE_INSTALL_PREFIX=~/tools/bear ../
6. Clang-Format
clang-format
是一个代码格式化的工具,可以帮助写出统一风格的代码,之前编译 clangd
的同时也会编译 clang-format
, 可以直接通过命令行来格式化指定文件
clang-format -style=google -i <file_name>
也可以通过 VsCode 中的 clangd
插件
7. Python3
sudo yum install libffi-devel
./configure
make # alternatively `make -j 4` will utilize 4 threads
sudo make altinstall