最近在将一个 CPP 项目转成 CUDA 项目,但是编译的时候发现现有的 CUDA 版本和 GCC 版本不匹配,需要自己安装对应版本的 GCC,但是自己又没有服务器的超级用户权限,用不了 update-alternatives
,所以需要使用源码编译安装与 CUDA 版本相匹配的相应版本的 GCC。
CUDA version | max supported GCC version |
---|---|
11.4.1+,11.5,11.6,11.7 | 11 |
11.1,11.2,11.3,11.4.0 | 10 |
11 | 9 |
10.1,10.2 | 8 |
9.2,10.0 | 7 |
9.0,9.1 | 6 |
8 | 5.3 |
首先下载对应的 gcc 版本,我使用的 CUDA 版本是 11.8,所以安装的 GCC 版本是 gcc-11.1.0。
-
下载源代码
wget https://ftp.gnu.org/gnu/gcc/gcc-11.1.0/gcc-11.1.0.tar.gz
-
解压文件
tar -xvf gcc-11.1.0.tar.gz
-
下载依赖项
cd gcc-11.1.0/ # gmp,mpfr,mpc,isl 等依赖下载 ./contrib/download_prerequisites
-
创建 build 目录用于编译
mkdir build && cd build
-
设置编译选项,生成 make 文件
../configure --prefix=/home/username/gcc11.1 --enable-checking=release --enable-languages=c,c++ --enable-threads=posix --disable-multilib
--enable-checking=release
,增加 release 的检查,也可以使用--disable-checking
使编译过程中不做额外检查
--enable-languages
表示你要让你的 gcc 支持哪些语言
--disable-multilib
不生成编译为其他平台可执行代码的交叉编译器 -
编译
make -j48 # 编译检查,确保编译无误 make check
-
安装
make install
-
编译项目代码时加上 CMake 编译的 gcc 路径即可
cmake -DCMAKE_C_COMPILER=/home/username/gcc11.1.0/bin/gcc -DCMAKE_CXX_COMPILER=/home/username/gcc11.1.0/bin/g++ ..