Chapter 1. Red Hat Developer Toolset 1.1. About Red Hat Developer Toolset Red Hat Developer Toolset is a Red Hat offering for developers on the Red Hat Enterprise Linux platform. It provides a complete set of development and performance analysis tools that can be installed and used on multiple versions of Red Hat Enterprise Linux. Executables built with the Red Hat Developer Toolset toolchain can then also be deployed and run on multiple versions of Red Hat Enterprise Linux. For detailed compatibility information, see Section 1.3, "Compatibility" . Red Hat Developer Toolset does not replace the default system tools provided with Red Hat Enterprise Linux 7 when installed on those platforms. Instead, a parallel set of developer tools provides an alternative, newer version of those tools for optional use by developers. The default compiler and debugger, for example, remain those provided by the base Red Hat Enterprise Linux system. What Is New in Red Hat Developer Toolset 12.1 Since Red Hat Developer Toolset 4.1, the Red Hat Developer Toolset content is also available in the ISO format together with the rest of Red Hat Software Collections content at https://access.redhat.com/downloads , specifically for Server and Workstation . Note that packages that require the Optional channel, which are discussed in Section 1.5.3, "Installing Optional Packages" , cannot be installed from the ISO image. Table 1.1. Red Hat Developer Toolset Components Name Version Description GCC 12.2.1 A portable compiler suite with support for C, C++, and Fortran. binutils 2.36.1 A collection of binary tools and other utilities to inspect and manipulate object files and binaries. elfutils 0.187 A collection of binary tools and other utilities to inspect and manipulate ELF files. dwz 0.14 A tool to optimize DWARF debugging information contained in ELF shared libraries and ELF executables for size. GDB 11.2 A command line debugger for programs written in C, C++, and Fortran. ltrace 0.7.91 A debugging tool to display calls to dynamic libraries that a program makes. It can also monitor system calls executed by programs. strace 5.18 A debugging tool to monitor system calls that a program uses and signals it receives. memstomp 0.1.5 A debugging tool to identify calls to library functions with overlapping memory regions that are not allowed by various standards. SystemTap 4.7 A tracing and probing tool to monitor the activities of the entire system without the need to instrument, recompile, install, and reboot. Valgrind 3.19.0 An instrumentation framework and a number of tools to profile applications in order to detect memory errors, identify memory management problems, and report any use of improper arguments in system calls. OProfile 1.4.0 A system-wide profiler that uses the performance monitoring hardware on the processor to retrieve information about the kernel and executables on the system. Dyninst 12.1.0 A library for instrumenting and working with user-space executables during their execution. make 4.3 A dependency-tracking build automation tool. annobin 11.08 A build security checking tool. Red Hat Developer Toolset differs from " Technology Preview " compiler releases previously supplied in Red Hat Enterprise Linux in two important respects: Red Hat Developer Toolset can be used on multiple major and minor releases of Red Hat Enterprise Linux, as detailed in Section 1.3, "Compatibility" . Unlike Technology Preview compilers and other tools shipped in earlier Red Hat Enterprise Linux, Red Hat Developer Toolset is fully supported under Red Hat Enterprise Linux Subscription Level Agreements, is functionally complete, and is intended for production use. Important bug fixes and security errata are issued to Red Hat Developer Toolset subscribers in a similar manner to Red Hat Enterprise Linux for two years from the release of each major version release. A new major version of Red Hat Developer Toolset is released annually, providing significant updates for existing components and adding major new components. A single minor release, issued six months after each new major version release, provides a smaller update of bug fixes, security errata, and new minor components. Additionally, the Red Hat Enterprise Linux Application Compatibility Specification also applies to Red Hat Developer Toolset (subject to some constraints on the use of newer C++11 language features, detailed in Section 2.2.4, "C++ Compatibility" ). Important Applications and libraries provided by Red Hat Developer Toolset do not replace the Red Hat Enterprise Linux system versions, nor are they used in preference to the system versions. Using a framework called Software Collections , an additional set of developer tools is installed into the /opt/ directory and is explicitly enabled by the user on demand using the scl utility. 1.2. Main Features Red Hat Developer Toolset 12.1 brings the following changes: The Red Hat Developer Toolset version of the GNU Compiler Collection ( GCC ) has been upgraded to version 12.2.1 with many new features and bug fixes. The Red Hat Developer Toolset version of the GNU Debugger ( GDB ) has been upgraded to version 11.2 with many new features and bug fixes. For a full list of changes and features introduced in this release, see Appendix B, Changes in Version 12.1 . 1.3. Compatibility Red Hat Developer Toolset 12.1 is available for Red Hat Enterprise Linux 7 for a number of architectures. For ABI compatibility information, see Section 2.2.4, "C++ Compatibility" . Table 1.2. Red Hat Developer Toolset 12.1 Compatibility Runs on Red Hat Enterprise Linux 7.7 Runs on Red Hat Enterprise Linux 7.9 Built with Red Hat Enterprise Linux 7.7 Supported Supported Built with Red Hat Enterprise Linux 7.9 Not Supported Supported Architecture support Red Hat Developer Toolset is available on the following architectures: The 64-bit Intel and AMD architectures IBM Power Systems, big endian IBM Power Systems, little endian 64-bit IBM Z 1.4. Getting Access to Red Hat Developer Toolset Red Hat Developer Toolset is an offering distributed as a part of Red Hat Software Collections. This content set is available to customers with Red Hat Enterprise Linux 7 subscriptions listed at https://access.redhat.com/solutions/472793 . Enable Red Hat Developer Toolset by using Red Hat Subscription Management. For information on how to register your system with this subscription management service, see the Red Hat Subscription Management collection of guides. 1.4.1. Using Red Hat Software Collections Complete the following steps to attach a subscription that provides access to the repository for Red Hat Software Collections (which includes Red Hat Developer Toolset), and then enable that repository: Determine the pool ID of a subscription that provides Red Hat Software Collections (and thus also Red Hat Developer Toolset). To do so, display a list of all subscriptions that are available for your system: For each available subscription, this command displays its name, unique identifier, expiration date, and other details related to your subscription. The pool ID is listed on a line beginning with Pool ID . For a complete list of subscriptions that provide access to Red Hat Developer Toolset, see https://access.redhat.com/solutions/472793 . Attach the appropriate subscription to your system: Replace pool_id with the pool ID you determined in the step. To verify the list of subscriptions your system has currently attached, at any time: Determine the exact name of the Red Hat Software Collections repository. Retrieve repository metadata and to display a list of available Yum repositories: The repository names depend on the specific version of Red Hat Enterprise Linux you are using and are in the following format: In addition, certain packages, such as devtoolset-12-gcc-plugin-devel , depend on packages that are only available in the Optional channel. The repository names with these packages use the following format: For both the regular repositories and optional repositories, replace variant with the Red Hat Enterprise Linux system variant ( server or workstation ), and version with the Red Hat Enterprise Linux system version ( 7 ). Enable the repositories from step no. 3: Replace repository with the name of the repository to enable. Once the subscription is attached to the system, you can install Red Hat Developer Toolset as described in Section 1.5, "Installing Red Hat Developer Toolset" . For more information on how to register your system using Red Hat Subscription Management and associate it with subscriptions, see the Red Hat Subscription Management collection of guides. 1.5. Installing Red Hat Developer Toolset Red Hat Developer Toolset is distributed as a collection of RPM packages that can be installed, updated, uninstalled, and inspected by using the standard package management tools that are included in Red Hat Enterprise Linux. Note that a valid subscription that provides access to the Red Hat Software Collections content set is required in order to install Red Hat Developer Toolset on your system. For detailed instructions on how to associate your system with an appropriate subscription and get access to Red Hat Developer Toolset, see Section 1.4, "Getting Access to Red Hat Developer Toolset" . Important Before installing Red Hat Developer Toolset, install all available Red Hat Enterprise Linux updates. 1.5.1. Installing All Available Components To install all components that are included in Red Hat Developer Toolset, install the devtoolset-12 package: This installs all development, debugging, and performance monitoring tools, and other dependent packages to the system. Alternatively, you can choose to install only a selected package group as described in Section 1.5.2, "Installing Individual Package Groups" . Note Note that since Red Hat Developer Toolset 3.0, the scl-utils package is not a part of Red Hat Developer Toolset, which is a change from preceding versions where the scl utility was installed along with the Red Hat Developer Toolset software collection. 1.5.2. Installing Individual Package Groups To make it easier to install only certain components, such as the integrated development environment or the software development toolchain, Red Hat Developer Toolset is distributed with a number of meta packages that allow you to install selected package groups as described in Table 1.3, "Red Hat Developer Toolset Meta Packages" . Table 1.3. Red Hat Developer Toolset Meta Packages Package Name Description Installed Components devtoolset-12-perftools Performance monitoring tools SystemTap, Valgrind, OProfile, Dyninst devtoolset-12-toolchain Development and debugging tools GCC, make, GDB, binutils, elfutils, dwz, memstomp, strace, ltrace To install any of these meta packages: Replace package_name with a space-separated list of meta packages you want to install. For example, to install only the development and debugging toolchain and packages that depend on it: Alternatively, you can choose to install all available components as described in Section 1.5.1, "Installing All Available Components" . 1.5.3. Installing Optional Packages Red Hat Developer Toolset is distributed with a number of optional packages that are not installed by default. To list all Red Hat Developer Toolset packages that are available to you but not installed on your system: To install any of these optional packages: Replace package_name with a space-separated list of packages that you want to install. For example, to install the devtoolset-12-gdb-gdbserver and devtoolset-12-gdb-doc packages: 1.5.4. Installing Debugging Information To install debugging information for any of the Red Hat Developer Toolset packages, make sure that the yum-utils package is installed and run: For example, to install debugging information for the devtoolset-12-dwz package: Note that in order to use this command, you need to have access to the repository with these packages. If your system is registered with Red Hat Subscription Management, enable the rhel- variant -rhscl- version -debug-rpms repository as described in Section 1.4, "Getting Access to Red Hat Developer Toolset" . For more information on how to get access to debuginfo packages, see https://access.redhat.com/site/solutions/9907 . Note The devtoolset-12- package_name -debuginfo packages can conflict with the corresponding packages from the base Red Hat Enterprise Linux system or from other versions of Red Hat Developer Toolset. This conflict also occurs in a multilib environment, where 64-bit debuginfo packages conflict with 32-bit debuginfo packages. Manually uninstall the conflicting debuginfo packages prior to installing Red Hat Developer Toolset 12.1 and install only relevant debuginfo packages when necessary. 1.6. Updating Red Hat Developer Toolset 1.6.1. Updating to a Minor Version When a new minor version of Red Hat Developer Toolset is available, update your Red Hat Enterprise Linux installation: This updates all packages on your Red Hat Enterprise Linux system, including the Red Hat Developer Toolset versions of development, debugging, and performance monitoring tools, and other dependent packages. Important Use of Red Hat Developer Toolset requires the removal of any earlier pre-release versions of it. Additionally, it is not possible to update to Red Hat Developer Toolset 12.1 from a pre-release version of Red Hat Developer Toolset, including beta releases. If you have previously installed any pre-release version of Red Hat Developer Toolset, uninstall it from your system as described in Section 1.7, "Uninstalling Red Hat Developer Toolset" and install the new version as documented in Section 1.5, "Installing Red Hat Developer Toolset" . 1.6.2. Updating to a Major Version When a new major version of Red Hat Developer Toolset is available, you can install it in parallel with the version. For detailed instructions on how to install Red Hat Developer Toolset on your system, see Section 1.5, "Installing Red Hat Developer Toolset" . 1.7. Uninstalling Red Hat Developer Toolset To uninstall Red Hat Developer Toolset packages from your system: This removes the GNU Compiler Collection , GNU Debugger , binutils , and other packages that are a part of Red Hat Developer Toolset from the system. Note Red Hat Developer Toolset 12.1 for Red Hat Enterprise Linux 7 no longer includes the libatomic and libitm libraries, which the above command attempts to remove, because they are not required for a proper function of Red Hat Developer Toolset components on that system. Nevertheless, the above command works as expected even on Red Hat Enterprise Linux 7. Note that the uninstallation of the tools provided by Red Hat Developer Toolset does not affect the Red Hat Enterprise Linux system versions of these tools. 1.8. Using Red Hat Developer Toolset Container Images Docker-formatted container images can be used to run Red Hat Developer Toolset components inside virtual software containers, thus isolating them from the host system and allowing for their rapid deployment. For detailed description of the Red Hat Developer Toolset docker-formatted container images and Red Hat Developer Toolset Dockerfiles , see Using Red Hat Software Collections Container Images . Note The docker package, which contains the Docker daemon, command-line tool, and other necessary components for building and using docker-formatted container images, is currently available only for the Server variant of the Red Hat Enterprise Linux 7 product. Follow the instructions outlined at Getting Docker in RHEL 7 to set up an environment for building and using docker-formatted container images. 1.9. Additional Resources For more information about Red Hat Developer Toolset and Red Hat Enterprise Linux, see the resources listed below. Online Documentation Red Hat Subscription Management collection of guides - The Red Hat Subscription Management collection of guides provides detailed information on how to manage subscriptions on Red Hat Enterprise Linux. Red Hat Developer Toolset 12.1 Release Notes - The Release Notes for Red Hat Developer Toolset 12.1 contain more information. Red Hat Enterprise Linux 7 Developer Guide - The Developer Guide for Red Hat Enterprise Linux 7 provides more information on the Eclipse IDE, libraries and runtime support, compiling and building, debugging, and profiling on these systems. Red Hat Enterprise Linux 7 Installation Guide - The Installation Guide for Red Hat Enterprise Linux 7 explains how to obtain, install, and update the system. Red Hat Enterprise Linux 7 System Administrator's Guide - The System Administrator's Guide for Red Hat Enterprise Linux 7 documents relevant information regarding the deployment, configuration, and administration of Red Hat Enterprise Linux 7. Using Red Hat Software Collections Container Images - This book provides information on how to use container images based on Red Hat Software Collections. The available container images include applications, daemons, databases, as well as the Red Hat Developer Toolset container images. The images can be run on Red Hat Enterprise Linux 7 Server and Red Hat Enterprise Linux Atomic Host. Getting Started with Containers - The guide contains a comprehensive overview of information about building and using container images on Red Hat Enterprise Linux 7 and Red Hat Enterprise Linux Atomic Host. See Also Appendix B, Changes in Version 12.1 - A list of changes and improvements over the version of the Red Hat Developer Toolset tools in the version of Red Hat Developer Toolset.

Commands:
subscription-manager list --available
subscription-manager attach --pool= pool_id
subscription-manager list --consumed
subscription-manager repos --list
rhel- variant -rhscl- version -rpms rhel- variant -rhscl- version -debug-rpms rhel- variant -rhscl- version -source-rpms
rhel- version - variant -optional-rpms rhel- version - variant -optional-debug-rpms rhel- version - variant -optional-source-rpms
subscription-manager repos --enable repository
yum install devtoolset-12
yum install package_name
yum install devtoolset-12-toolchain
yum list available devtoolset-12-\*
yum install package_name
yum install devtoolset-12-gdb-gdbserver devtoolset-12-gdb-doc
debuginfo-install package_name
debuginfo-install devtoolset-12-dwz
yum update
yum remove devtoolset-12\* libasan libatomic libcilkrts libitm liblsan libtsan libubsan