ROS云课三分钟-cmake gcc g++ 默认版本和升级-250523
2022古旧版:蓝桥ROS之 cmake gcc g++ 默认版本和升级_gcc ros-CSDN博客
版本查看
shiyanlou:~/ $ cmake --version [8:46:04]
cmake version 3.5.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
shiyanlou:~/ $ gcc --version [8:46:13]
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
shiyanlou:~/ $ g++ --version [8:46:28]
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
shiyanlou:~/ $ [8:46:37]
古旧到离谱……
本文介绍了在Ubuntu系统中查看和升级CMake、GCC、G++版本的过程。首先,通过命令行查看当前CMake、GCC、G++的版本,发现版本较旧。接着,使用清华镜像源升级pip和CMake,成功将CMake升级到3.28.4。然后,尝试通过添加PPA源和手动安装的方式升级GCC和G++到7版本,但由于依赖问题未能成功。文章提供了多种解决方案,包括修复依赖、添加旧版源、手动编译安装GCC-7以及使用Docker容器。最后,建议在可能的情况下升级代码或使用更高版本的GCC。
更新
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pipsudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple cmake
pip太旧了……
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
然后才能升级cmake
sudo pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple cmake
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting cmakeDownloading https://pypi.tuna.tsinghua.edu.cn/packages/2f/a1/aed90f63609db7af7bbd9a6ad8bcc28b710ed58db3ebf0e7c92ce1d04f26/cmake-3.28.4-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (26.3 MB)|████████████████████████████████| 26.3 MB 1.2 MB/s
Installing collected packages: cmake
Successfully installed cmake-3.28.4shiyanlou:~/ $ cmake --version [8:55:34]
cmake version 3.28.4CMake suite maintained and supported by Kitware (kitware.com/cmake).
gcc和g++
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
然后可以看到也就到7版本。
sudo apt install gcc-7 g++-7
gcc/g++ 5.4 版本对 C++ 标准的支持情况如下:
-
对 C++11 的支持:gcc/g++ 5.4 版本在编译时需显式添加
-std=c++11
或-std=c++0x
选项才能支持 C++11 标准。默认情况下,该版本可能不会自动启用 C++11 支持,但通过编译选项可以激活。 -
对 C++14 的支持:gcc/g++ 5.4 版本对 C++14 的支持不完全,部分 C++14 特性可能无法使用。尽管可以通过
-std=c++14
选项尝试启用,但某些高级特性可能无法正常工作。 -
默认支持的标准:gcc/g++ 5.4 版本默认支持 C++98 标准。若需使用更新的 C++ 标准,必须通过编译选项显式指定。
但是依赖问题导致无法安装,哈哈哈,我配置的镜像被运维方改得面目全非啊。哇咔咔。
我能怎么办,我也很无奈。
默认是5版。
这个错误表明系统无法安装 gcc-7
和 g++-7
,因为所需的依赖包(如 libisl19
和 libmpfr6
)在当前软件源中不可用或存在版本冲突。以下是解决方案:
1. 检查系统版本
首先确认你的 Ubuntu 版本:
bash
lsb_release -a |
- Ubuntu 18.04 (Bionic):
gcc-7
和g++-7
是官方源支持的版本。 - Ubuntu 20.04/22.04:默认不提供
gcc-7
,需手动添加旧版源或编译安装。
2. 解决方案
方案一:为 Ubuntu 18.04 修复依赖
如果系统是 Ubuntu 18.04,尝试以下步骤:
-
更新软件源:
bash
sudo apt update
-
安装依赖包:
bash
sudo apt install libisl19 libmpfr6
-
重新安装
gcc-7
和g++-7
:bash
sudo apt install gcc-7 g++-7
方案二:为 Ubuntu 20.04/22.04 添加旧版源
如果系统是 Ubuntu 20.04/22.04,需手动添加 Ubuntu 18.04 的源(不推荐长期使用):
-
添加 Ubuntu 18.04 源:
bash
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/bionic.list
sudo apt update
-
安装
gcc-7
和g++-7
:bash
sudo apt install gcc-7 g++-7
-
(可选)恢复默认源:
安装完成后,建议删除/etc/apt/sources.list.d/bionic.list
并更新:bash
sudo rm /etc/apt/sources.list.d/bionic.list
sudo apt update
方案三:手动编译安装 GCC-7
如果上述方法无效,可以手动编译安装:
-
安装编译依赖:
bash
sudo apt install build-essential wget bzip2
-
下载 GCC-7 源码:
bash
wget https://ftp.gnu.org/gnu/gcc/gcc-7.5.0/gcc-7.5.0.tar.gz
tar -xvf gcc-7.5.0.tar.gz
cd gcc-7.5.0
-
配置并编译:
bash
./contrib/download_prerequisites
mkdir build && cd build
../configure --prefix=/usr/local/gcc-7 --disable-multilib --enable-languages=c,c++
make -j$(nproc)
sudo make install
-
设置环境变量:
bash
echo "export PATH=/usr/local/gcc-7/bin:$PATH" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=/usr/local/gcc-7/lib64:$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc
方案四:使用 Docker 容器
如果仅需临时使用 GCC-7,可以通过 Docker 运行 Ubuntu 18.04 容器:
bash
docker run -it ubuntu:18.04 |
在容器内安装 gcc-7
:
bash
apt update && apt install gcc-7 g++-7 -y |
3. 验证安装
安装完成后,检查版本:
bash
gcc-7 --version | |
g++-7 --version |
注意事项
- 兼容性问题:GCC-7 是较旧版本,可能与新系统库存在兼容性问题。
- 推荐替代方案:如果可能,建议升级代码或使用更高版本的 GCC(如 GCC-9/GCC-11)。
希望以上方法能解决问题!
在Ubuntu 16.04上直接安装g++ 10可能存在依赖问题,因为Ubuntu 16.04的官方源中默认不包含g++ 10,但可通过以下方法实现:
安装方法
-
添加PPA源
使用ubuntu-toolchain-r/test
PPA源获取更新的GCC/g++版本:bash
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
-
安装g++ 10
安装g++ 10及其依赖项:bash
sudo apt install g++-10 gcc-10
-
多版本管理(可选)
使用update-alternatives
工具管理多个g++版本:bash
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 100
sudo update-alternatives --config g++
注意事项
- 依赖问题:Ubuntu 16.04的默认库版本较旧,可能导致g++ 10安装时出现依赖冲突。可尝试先升级系统关键库或使用
--fix-missing
参数解决部分依赖问题。 - 源兼容性:
ubuntu-toolchain-r/test
PPA可能不包含所有版本的GCC/g++,若安装失败,可尝试从第三方源(如Launchpad个人PPA)获取。 - 系统兼容性:Ubuntu 16.04已结束标准支持(EOL),建议升级到更新的长期支持版本(如Ubuntu 20.04/22.04)以获得更好的兼容性。
替代方案
- 容器化开发:使用Docker运行包含g++ 10的环境,避免污染宿主机系统:
bash
docker run -it ubuntu:20.04 bash
# 在容器内安装g++ 10
- 源码编译:从GNU官网下载g++ 10源码并手动编译安装,但需自行解决所有依赖。