使用devtoolset进行高效的编程开发

随着编程语言和工具的不断发展,开发者们需要时刻保持对技术的更新和学习。而在Linux平台上,使用编程工具也需要一定的技巧和效率。本文将介绍devtoolset在编程开发中的使用,包括基本概念,安装,使用方法等等。当你完全掌握这些知识后,你将会在Linux上实现高效的编程开发。

一、devtoolset基本概念

Devtoolset是开源组织Software Collections (SCL)的一部分。它是一组工具,包括编译器、调试器和其他构建工具,这些工具常以软件包的形式打包,并发布到Red Hat Enterprise Linux、CentOS和Scientific Linux等Linux平台上。Devtoolset的编译工具支持多个版本的编译器,来制定不同的应用程序和项目的编译需求。例如 Devtoolset 7, 8 和 9支持 GCC 7, 8和 9版本的编译器。

根据开发者的需求,在同一系统上同时安装多个版本的编译器工具很重要。特别是当应用程序需要特定版本的Glibc时, 这个需求非常迫切,因为新版本的编译器可能会依赖新版本的Glibc。

二、devtoolset安装方法

在 CentOS 7 或 RHEL 7 上安装 Devtoolset,请执行以下命令:

# yum install centos-release-scl
# yum install devtoolset-9

# yum install devtoolset-9-gcc*

安装完成后,执行以下命令以启用Devtoolset 9环境:

# scl enable devtoolset-9 bash

运行命令之后,当前终端中将自动激活Devtoolset 9。可以使用gcc -v 查看当前终端的gcc版本。 

显示为 gcc version 8.3.1 20190311 (Red Hat 8.3.1-3) (GCC)

补充:这条激活命令只对本次会话有效,重启会话后还是会变回原来的4.8.5版本,要想随意切换可按如下操作。

首先,安装的devtoolset是在 /opt/rh 目录下的,如图

 每个版本的目录下面都有个 enable 文件,如果需要启用某个版本,只需要执行

source ./enable

所以要想切换到某个版本,只需要执行

source /opt/rh/devtoolset-8/enable

可以将对应版本的切换命令写个shell文件放在配了环境变量的目录下,需要时随时切换。

如果开发者需要在启动时默认激活Devtoolset 9环境,可以执行以下命令:

# echo "scl enable devtoolset-9 bash" >> ~/.bashrc

执行上述命令后,每次启动终端时,将自动激活Devtoolset 9环境。

还有一种方式就是直接替换旧的gcc

旧的gcc是运行的 /usr/bin/gcc,所以将该目录下的gcc/g++替换为刚安装的新版本gcc软连接,免得每次enable

mv /usr/bin/gcc /usr/bin/gcc-4.8.5
 
ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc
 
mv /usr/bin/g++ /usr/bin/g++-4.8.5
 
ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/bin/g++
 
gcc --version
 
g++ --version

三、使用devtoolset编译程序

在激活Devtoolset环境之后,您将可以使用新版本的编译器来编译和构建应用程序。

例如,使用Devtoolset 9编译C++代码:

$ scl enable devtoolset-9 bash
$ g++ --version
$ g++ -Wall -o myprogram myprogram.cpp

在编译代码时,也可以使用特定版本的编译器。例如,使用Devtoolset 9中的编译器:

$ scl enable devtoolset-7 bash
$ g++ --version
$ g++ -Wall -o myprogram myprogram.cpp

 

四、devtoolset的好处

使用Devtoolset的好处在于,您可以在同一个系统上使用多个版本的编译器,以便满足不同应用程序的需求。此外,使用Devtoolset可以更轻松地使用新功能、性能优化等。

与其他通用的软件工具相比,Devtoolset拥有专门的技术和支持,因此可以更轻松地在您的Linux环境中实现高效的编程开发。

posted @ 2024-01-11 10:43  _成飞  阅读(1161)  评论(0编辑  收藏  举报