Ubuntu22.04多版本gcc g++切换

ubuntu 22.04的默认gcc g++ 为11,在实际编译中可能需要用到低版本编译器

 

出现的问题 E: 软件包 gcc-7 没有可安装候选

(1)更新源,安装,即可

vim /etc/apt/sources.list
#在sources.list中添加如下内容
deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe
#更新源
sudo apt-get update
#安装gcc-7和g++-7
sudo apt-get install -y gcc-7 g++-7

(2)将多个gcc版本的优先级设置成一样 便于我们后续开启手动配置

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100

(3)打开手动配置

#切换gcc版本
sudo update-alternatives --config gcc
#切换g++版本
sudo update-alternatives --config g++

(4)手动设置需要的gcc/g++

  选择       路径           优先级  状态
------------------------------------------------------------
* 0            /usr/bin/gcc-7    100       自动模式
  1            /usr/bin/gcc-11   100       手动模式
  2            /usr/bin/gcc-7    100       手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:2

这时我们的gcc版本已由默认的11变成了7, g++操作类似

### 安装 CUDA 和 GCC #### 准备工作 为了确保顺利安装 CUDA 10.0 及其依赖项,在 Ubuntu 22.04 中需要先解决 GCC 版本不兼容的问题。由于默认情况下,Ubuntu 22.04 使用的是较新的 GCC (版本 11.*) 而 CUDA 10.0 需要 GCC 7.x[^1]。 #### 卸载现有 GCC 并安装指定版本 卸载当前系统的 GCC 编译器并安装所需版本: ```bash sudo apt-get remove gcc g++ sudo apt install gcc-7 g++-7 ``` 设置默认使用的编译器为新安装的 GCC 7: ```bash sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 \ --slave /usr/bin/g++ g++ /usr/bin/g++-7 ``` 验证安装成功与否可以通过命令 `gcc --version` 来确认已切换至所需的 GCC 版本。 #### 下载与配置 CUDA Toolkit 前往 NVIDIA 官方网站下载适用于 Linux 的 CUDA 10.0 Installer,并按照官方文档中的说明完成安装过程。注意选择适合的操作系统架构以及驱动程序版本。 执行如下命令以添加环境变量(假设安装目录为 `/usr/local/cuda-10.0`),这一步骤对于后续开发至关重要: ```bash echo 'export PATH=/usr/local/cuda-10.0/bin${PATH:+:${PATH}}' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc source ~/.bashrc ``` #### 测试安装成果 通过编写简单的 Hello World 程序测试 GPU 是否能够正常调用 CUDA API 进行计算任务处理。 ```cpp #include <stdio.h> __global__ void helloFromGPU() { printf("Hello from GPU!\n"); } int main(){ printf("Hello from CPU\n"); helloFromGPU<<<1, 1>>>(); cudaDeviceSynchronize(); } ``` 保存上述代码片段到 `.cu` 文件中并通过 nvcc 编译工具构建可执行文件;最后运行该二进制文件观察输出结果是否符合预期。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值