前言
由于很多开发环境所用的环境都是比较追求稳定,或者未跟上编译器的更新速度;还有有些代码是依赖于gcc/g++的内建特性的。导致有些用新版本的gcc/g++编译时无法通过,或者编译后无法正常运行的。就需要对自带的编译器进行升级或者降级。
步骤说明
笔者这里需要用版本低一点的gcc/g++工具链,需要对Ubuntu18 LTS自带的7.3.0进行降级操作。以下是流程:
- 安装gcc-4.8和g+±4.8
$ sudo apt install gcc-4.8 gcc-4.8-multilib g++-4.8 g++-4.8-multilib
- 查找原gcc/g++所在目录
$ which gcc
$ /usr/bin/gcc
- 重新创建gcc软链接
$ sudo ln -sf /usr/bin/gcc-4.8 /usr/bin/gcc
$ sudo ln -sf /usr/bin/gcc-ar-4.8 /usr/bin/gcc-ar
$ sudo ln -sf /usr/bin/gcc-nm-4.8 /usr/bin/gcc-nm
$ sudo ln -sf /usr/bin/gcc-ranlib-4.8 /usr/bin/gcc-ranlib
$ sudo ln -sf /usr/bin/gcov-4.8 /usr/bin/gcov
$ ls -al /usr/bin/gc*
lrwxrwxrwx 1 root root 16 12月 25 22:13 /usr/bin/gcc -> /usr/bin/gcc-4.8
-rwxr-xr-x 1 root root 772280 3月 19 2018 /usr/bin/gcc-4.8
lrwxrwxrwx 1 root root 22 7月 26 20:25 /usr/bin/gcc-7 -> x86_64-linux-gnu-gcc-7
lrwxrwxrwx 1 root root 19 12月 25 22:13 /usr/bin/gcc-ar -> /usr/bin/gcc-ar-4.8
-rwxr-xr-x 1 root root 27088 3月 19 2018 /usr/bin/gcc-ar-4.8
lrwxrwxrwx 1 root root 25 7月 26 20:25 /usr/bin/gcc-ar-7 -> x86_64-linux-gnu-gcc-ar-7
lrwxrwxrwx 1 root root 19 12月 25 22:13 /usr/bin/gcc-nm -> /usr/bin/gcc-nm-4.8
-rwxr-xr-x 1 root root 27088 3月 19 2018 /usr/bin/gcc-nm-4.8
lrwxrwxrwx 1 root root 25 7月 26 20:25 /usr/bin/gcc-nm-7 -> x86_64-linux-gnu-gcc-nm-7
lrwxrwxrwx 1 root root 23 12月 25 22:13 /usr/bin/gcc-ranlib -> /usr/bin/gcc-ranlib-4.8
-rwxr-xr-x 1 root root 27088 3月 19 2018 /usr/bin/gcc-ranlib-4.8
lrwxrwxrwx 1 root root 29 7月 26 20:25 /usr/bin/gcc-ranlib-7 -> x86_64-linux-gnu-gcc-ranlib-7
-rwxr-xr-x 1 root root 3405 4月 9 2018 /usr/bin/gcore
lrwxrwxrwx 1 root root 17 12月 25 22:13 /usr/bin/gcov -> /usr/bin/gcov-4.8
-rwxr-xr-x 1 root root 318472 3月 19 2018 /usr/bin/gcov-4.8
lrwxrwxrwx 1 root root 23 7月 26 20:25 /usr/bin/gcov-7 -> x86_64-linux-gnu-gcov-7
lrwxrwxrwx 1 root root 11 9月 17 15:07 /usr/bin/gcov-dump -> gcov-dump-7
lrwxrwxrwx 1 root root 28 7月 26 20:25 /usr/bin/gcov-dump-7 -> x86_64-linux-gnu-gcov-dump-7
lrwxrwxrwx 1 root root 11 9月 17 15:07 /usr/bin/gcov-tool -> gcov-tool-7
lrwxrwxrwx 1 root root 28 7月 26 20:25 /usr/bin/gcov-tool-7 -> x86_64-linux-gnu-gcov-tool-7
-rwxr-xr-x 1 root root 10312 3月 13 2018 /usr/bin/gcr-viewer
- 重新创建g++软链接
$ sudo ln -sf g++-4.8 /usr/bin/g++
$ ls -al /usr/bin/g+*
lrwxrwxrwx 1 root root 16 12月 25 22:13 /usr/bin/g++ -> /usr/bin/g++-4.8
-rwxr-xr-x 1 root root 776376 3月 19 2018 /usr/bin/g++-4.8
lrwxrwxrwx 1 root root 22 7月 26 20:25 /usr/bin/g++-7 -> x86_64-linux-gnu-g++-7
查看结果
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.5-4ubuntu8' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.5 (Ubuntu 4.8.5-4ubuntu8)
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.5-4ubuntu8' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.5 (Ubuntu 4.8.5-4ubuntu8)
说明:降级与升级类似,替换软链接源即可。