博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 指定编译器版本,Linux 下搭建 C/C++编译开发环境及GCC多版本切换
阅读量:5253 次
发布时间:2019-06-14

本文共 5243 字,大约阅读时间需要 17 分钟。

原标题:Linux 下搭建 C/C++编译开发环境及GCC多版本切换

本文详细记录在Ubuntu 18.04.2 下搭建 C/C++编译开发环境的步骤,Ubuntu 18.04.2预装GCC版本为7.4,但有时在编译是需要用的不同gcc版本,下面就介绍如何安装不同的gcc 和g++版本,并设置根据不同的需要在不同版本之间切换。

1. 环境准备

首先需要安装gcc和g++环境

安装之前查看是否有安装,使用命令:

gcc --version

g++ --version

3745183f85b701a72f5d4ae329abca15.png

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

b1039c111d1ac68807fce65b695c61f8.png

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

9414a1a0949d15b94c946b7e4815c975.png

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

e0c3453609c0c6c0e61a3aa54f1cd6c0.png

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

24f65f487918fb6e5853b57b4522561e.png

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

19816762bd7e08cba066734ed628a2cf.png

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

e12b05c79f9fcfed0fae4dc0c2572886.png

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

6700b74ec0cf044fd02c3a90f58d8146.png

接着查看

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

db56e86d5b7bbeec9b8da2108486a7b7.png

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

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.

e68ab7722561c646bdee2132ed481e6c.png

2. 编写C源代码

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

#include

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上,通过按回车键运行,如图所示:

27cdcafb0fd317c86ed2c4a877eeb04d.png

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

如果还有什么问题,请在下面的留言栏里提出,谢谢。

本文永久更新链接地址:https://www.linuxidc.com/Linux/2019-04/158258.htm返回搜狐,查看更多

责任编辑:

转载地址:http://yzrav.baihongyu.com/

你可能感兴趣的文章
smplayer中使用srt字幕乱码问题
查看>>
python--输入一组无序的数,排序
查看>>
第八天 线性表【下】
查看>>
现代软件工程_第一周练习_第4题02_万世想
查看>>
[转]Log4j使用总结
查看>>
ssh(安全外壳协议)
查看>>
python基础_特殊符号
查看>>
关于Java序列化和Hadoop的序列化
查看>>
创建线程的三种方式
查看>>
docker rancher 体验 (未完待续.....)
查看>>
10反射
查看>>
Android操作Sqlite数据库
查看>>
opencv 鼠标交互
查看>>
iOS之地图开发
查看>>
[Swift]LeetCode1015. 可被 K 整除的最小整数 | Smallest Integer Divisible by K
查看>>
[Swift]LeetCode1124. 表现良好的最长时间段 | Longest Well-Performing Interval
查看>>
[Swift]LeetCode942. 增减字符串匹配 | DI String Match
查看>>
Pascal代码自动格式化
查看>>
蔡康永的说话之道2-透过说话,懂得把别放在心上
查看>>
计算机网络设备之交换机和路由器
查看>>