手机版
你好,游客 登录 注册
背景:
阅读新闻

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

[日期:2019-04-23] 来源: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 下搭建 C/C++编译开发环境

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

Ubuntu 18.04 下搭建 C/C++编译开发环境

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

Ubuntu 18.04 下搭建 C/C++编译开发环境

# 版本安装:这里选择的式版本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

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

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

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

现在查看已安装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

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

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

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

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

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

接着查看

选择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++)

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

安装后查看版本,如下图所示:

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.

Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换

2. 编写C源代码

可以通过任何文本编辑器创建一个.cpp的文件.在这里用创建一个linuxidc.com.cpp文件,并保存在一个文件中,测试的代码为:

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello, Linux公社 www.linuxidc.com" << endl;
    return 0;
}

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++编译开发环境及GCC多版本切换

到这里就完成了Ubuntu 18.04下 C/C++环境的搭建,对于从编译到运行的过程可以通过脚本来一步到位执行。

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-04/158258.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款