1、Configuring gcc installation dependencies
1.1 Installation of required software
#yum install -y gcc gcc-c++ gmp-devel bzip21.2 Download the gcc package and extract it
#wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-11.2.0/gcc-11.2.0.tar.gz# tar -xvf gcc-11.2.0.tar.gz1.3 Configuration Dependencies
#cd gcc-11.2.0The message All prerequisites downloaded successfully.
If the download fails you can install the dependencies manually The dependency packages to be downloaded are listed below:
- gmp-6.1.0.tar.bz2
- mpfr-3.1.6.tar.bz2
- mpc-1.0.3.tar.gz
- isl-0.18.tar.bz2
Download Url::
https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2
https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.6.tar.bz2
https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
Install gmp
#cd gmp-6.1.0#./configure --prefix=/usr/local/related/gmp-6.1.0#make && make installInstall mpfr
#cd mpfr-3.1.6#./configure --prefix=/usr/local/related/mpfr-3.1.6 --with-gmp=/usr/local/related/gmp-6.1.0#make && make installInstall mpc
#cd mpc-1.0.3#./configure --prefix=/usr/local/related/mpc-1.0.3 \--with-gmp=/usr/local/related/gmp-6.1.0 \--with-mpfr=/usr/local/related/mpfr-3.1.6#make && make installInstall isl
#cd isl-0.18#./configure --prefix=/usr/local/related/isl-0.18 --with-gmp=/usr/local/related/gmp-6.1.0#make && make install2、Install gcc
First create the gcc build directory
#cd gcc-11.2.0 && mkdir build && cd buildAdding Compilation Parameters
#../configure --prefix=/opt/gcc-11.2.0 \--enable-checking=release \--enable-languages=c,c++ \--disable-multilib
/* Manual installation of dependency packages requires the path to be specified--with-gmp=/usr/local/related/gmp-6.1.0 \--with-mpfr=/usr/local/related/mpfr-3.1.6 \--with-mpc=/usr/local/related/mpc-1.0.3*/Executed without error
make && make installThe process will be long and may take hours
3、Managing gcc with alternatives
Alternatives Usage: Determines the default commands used by the system by maintaining symbolic links, version selection, and service selection.
Backup the original gcc first
#mv /usr/bin/gcc /usr/bin/gcc-4.8.5#mv /usr/bin/g++ /usr/bin/g++-4.8.5Using alternatives links
#alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8.5 88 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8.5#alternatives --install /usr/bin/gcc gcc /opt/gcc-10.2.0/bin/x86_64-pc-linux-gnu-gcc 99 --slave /usr/bin/g++ g++ /opt/gcc-10.2.0/bin/x86_64-pc-linux-gnu-g++Use alternatives to select the system’s default gcc version
#alternatives --config gcc
There are 2 programs which provide 'gcc'.
Selection Command----------------------------------------------- 1 /usr/bin/gcc-4.8.5*+ 2 /opt/gcc-11.2.0/bin/x86_64-pc-linux-gnu-gcc
Enter to keep the current selection[+], or type selection number: 2 # Enter the serial number here to select the gcc versionView the current gcc version
#gcc -vUsing built-in specs.COLLECT_GCC=gccCOLLECT_LTO_WRAPPER=/opt/gcc-11.2.0/libexec/gcc/x86_64-pc-linux-gnu/11.2.0/lto-wrapperTarget: x86_64-pc-linux-gnuConfigured with: ../configure --prefix=/opt/gcc-11.2.0 --enable-checking=release --enable-languages=c,c++ --disable-multilibThread model: posixSupported LTO compression algorithms: zlibgcc version 11.2.0 (GCC)
#g++ -vUsing built-in specs.COLLECT_GCC=g++COLLECT_LTO_WRAPPER=/opt/gcc-11.2.0/libexec/gcc/x86_64-pc-linux-gnu/11.2.0/lto-wrapperTarget: x86_64-pc-linux-gnuConfigured with: ../configure --prefix=/opt/gcc-11.2.0 --enable-checking=release --enable-languages=c,c++ --disable-multilibThread model: posixSupported LTO compression algorithms: zlibgcc version 11.2.0 (GCC)4、Updating library links
Not updating the library link typically reports the following error:
/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.22' not foundTwo ways to update The first is simple and brutal
#find / -name libstdc++.so.6#rm -rf /usr/lib64/libstdc++.so.6#ln -s /opt/gcc-11.2.0/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6Second addition
#echo "/opt/gcc-11.2.0/lib64" >> /etc/ld.so.conf#ldconfigSee which libraries are currently included
#strings /usr/lib64/libstdc++.so.6 | grep GLIBCGLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBCXX_3.4.7GLIBCXX_3.4.8GLIBCXX_3.4.9GLIBCXX_3.4.10GLIBCXX_3.4.11GLIBCXX_3.4.12GLIBCXX_3.4.13GLIBCXX_3.4.14GLIBCXX_3.4.15GLIBCXX_3.4.16GLIBCXX_3.4.17GLIBCXX_3.4.18GLIBCXX_3.4.19GLIBCXX_3.4.20GLIBCXX_3.4.21GLIBCXX_3.4.22GLIBCXX_3.4.23GLIBCXX_3.4.24GLIBCXX_3.4.25GLIBCXX_3.4.26GLIBCXX_3.4.27GLIBCXX_3.4.28GLIBCXX_3.4.29