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 版本太低,这个就必须得自己编译一个了,如果你已经安装前面的升级了 cmakegcc 就可以直接编译了。这个编译需要挺长时间的

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

参考

  1. cmake.org
  2. CentOS7/完美升级GCC版本方法
  3. install clangd on linux
  4. 在 alios7 上安装 clangd