关注公众号 风色年代(itfantasycc) 领 500G Java 微服务 开发资料
Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换_Linux教程_Linux公社-Linux系统门户网站
本文详细记录在Ubuntu 18.04.2 下搭建 C/C++编译开发环境的步骤,Ubuntu 18.04.2预装GCC版本为7.4,但有时在编译是需要用的不同gcc版本,下面就介绍如何安装不同的gcc 和g++版本,并设置根据不同的需要在不同版本之间切换。
1. 环境准备
首先需要安装gcc和g++环境
安装之前查看是否有安装,使用命令:
gcc --version
g++ --version
Ubuntu 18.04中gcc与g++默认安装的是7.4.0版本。
你也可以使用以下命令安装其他版本的gcc与g++:
# 版本安装:这里选择的式版本8
linuxidc@linuxidc:~/linuxidc.com$ sudo apt install gcc-8
[sudo] linuxidc 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
cpp-8 libasan5 libgcc-8-dev libubsan1
建议安装:
gcc-8-locales gcc-8-multilib gcc-8-doc libgcc1-dbg libgomp1-dbg libitm1-dbg
libatomic1-dbg libasan5-dbg liblsan0-dbg libtsan0-dbg libubsan1-dbg
libmpx2-dbg libquadmath0-dbg
下列【新】软件包将被安装:
cpp-8 gcc-8 libasan5 libgcc-8-dev libubsan1
升级了 0 个软件包,新安装了 5 个软件包,要卸载 0 个软件包,有 185 个软件包未被升级。
需要下载 21.5 MB 的归档。
解压缩后会消耗 71.4 MB 的额外空间。
您希望继续执行吗? [Y/n] Y
linuxidc@linuxidc:~/linuxidc.com$ sudo apt install g++-8
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
libstdc++-8-dev
建议安装:
g++-8-multilib gcc-8-doc libstdc++6-8-dbg libstdc++-8-doc
下列【新】软件包将被安装:
g++-8 libstdc++-8-dev
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 185 个软件包未被升级。
需要下载 11.6 MB 的归档。
解压缩后会消耗 45.2 MB 的额外空间。
您希望继续执行吗? [Y/n] Y
# 版本安装:这里选择的式版本5
linuxidc@linuxidc:~/linuxidc.com$ sudo apt-get install gcc-5
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
cpp-5 gcc-5-base libasan2 libgcc-5-dev libisl15 libmpx0
建议安装:
gcc-5-locales gcc-5-multilib gcc-5-doc libgcc1-dbg libgomp1-dbg libitm1-dbg
libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg
下列【新】软件包将被安装:
cpp-5 gcc-5 gcc-5-base libasan2 libgcc-5-dev libisl15 libmpx0
升级了 0 个软件包,新安装了 7 个软件包,要卸载 0 个软件包,有 185 个软件包未被升级。
需要下载 19.2 MB 的归档。
解压缩后会消耗 61.5 MB 的额外空间。
您希望继续执行吗? [Y/n] Y
linuxidc@linuxidc:~/linuxidc.com$ sudo apt-get install g++-5
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
将会同时安装下列软件:
libstdc++-5-dev
建议安装:
g++-5-multilib gcc-5-doc libstdc++6-5-dbg libstdc++-5-doc
下列【新】软件包将被安装:
g++-5 libstdc++-5-dev
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 185 个软件包未被升级。
需要下载 9,864 kB 的归档。
解压缩后会消耗 38.6 MB 的额外空间。
您希望继续执行吗? [Y/n] y
现在查看已安装gcc版本
linuxidc@linuxidc:~/linuxidc.com$ ls /usr/bin/gcc*
/usr/bin/gcc /usr/bin/gcc-ar /usr/bin/gcc-nm /usr/bin/gcc-ranlib
/usr/bin/gcc-5 /usr/bin/gcc-ar-5 /usr/bin/gcc-nm-5 /usr/bin/gcc-ranlib-5
/usr/bin/gcc-7 /usr/bin/gcc-ar-7 /usr/bin/gcc-nm-7 /usr/bin/gcc-ranlib-7
/usr/bin/gcc-8 /usr/bin/gcc-ar-8 /usr/bin/gcc-nm-8 /usr/bin/gcc-ranlib-8
update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件版本。
其中40 ,50 ,70是优先级数值可以自己设定,--slave能保证gcc和g++保持相同的版本。
设置优先级
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 30
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 40
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 30
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 40
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
接着查看
选择gcc版本
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --config gcc
有 3 个候选项可用于替换 gcc (提供 /usr/bin/gcc)。
选择 路径 优先级 状态
------------------------------------------------------------
0 /usr/bin/gcc-5 50 自动模式
1 /usr/bin/gcc-5 50 手动模式
2 /usr/bin/gcc-7 40 手动模式
* 3 /usr/bin/gcc-8 30 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:
现在默认为gcc8
选择g++版本
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --config g++
有 3 个候选项可用于替换 g++ (提供 /usr/bin/g++)。
选择 路径 优先级 状态
------------------------------------------------------------
* 0 /usr/bin/g++-5 50 自动模式
1 /usr/bin/g++-5 50 手动模式
2 /usr/bin/g++-7 40 手动模式
3 /usr/bin/g++-8 30 手动模式
要维持当前值[*]请按<回车键>,或者键入选择的编号:3
update-alternatives: 使用 /usr/bin/g++-8 来在手动模式中提供 /usr/bin/g++ (g++)
安装后查看版本,如下图所示:
linuxidc@linuxidc:~/linuxidc.com$ gcc --version
gcc (Ubuntu 8.3.0-6ubuntu1~18.04) 8.3.0
Copyright (C) 2018 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.
linuxidc@linuxidc:~/linuxidc.com$ g++ --version
g++ (Ubuntu 8.3.0-6ubuntu1~18.04) 8.3.0
Copyright (C) 2018 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.
2. 编写C源代码
可以通过任何文本编辑器创建一个.cpp的文件.在这里用创建一个linuxidc.com.cpp文件,并保存在一个文件中,测试的代码为:
3. 代码编译
打开终端使用如下命令进行编译:
// 命令格式:g++ 文件名
g++ linuxidc.com.cpp
注意:这里的文件名其实是包含文件路径的。要是不知道文件路径的话可以在敲完g++加上空格之后直接把文件拖进去,系统会自动添加文件路径。默认的输出位置是“主文件夹”,默认输出文件是a.out。可以使用以下格式指定输出的文件名:
g++ 文件名 -o 输出文件名
比如g++ linuxidc.com.cpp -o linuxidc.com
输出的路径仍然是默认路径,文件名应是*.out的格式。这里要注意的是使用-o命令必须指定输出文件名,否则会报错:g++: argument to ‘-o’ missing。
对于g++的命令使用,可以通过:man g++命令查看
4. 执行并输出结果
通过以上编译得到*.out文件以后,你也可以直接把这个文件拖到Terminal上,通过按回车键运行,如图所示:
到这里就完成了Ubuntu 18.04下 C/C++环境的搭建,对于从编译到运行的过程可以通过脚本来一步到位执行。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址:Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换_Linux教程_Linux公社-Linux系统门户网站
关注Linux公社(LinuxIDC.com)官方微信与QQ群,随机发放邀请码
关注公众号 风色年代(itfantasycc) 领 500G Java 微服务 开发资料