GNU Mirror List
查看動態(tài)庫版本
strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI'
查找gcc生成的最新動態(tài)庫
find / -name "libstdc++.so*"
一、升級 gcc:
1、查看當前gcc版本
#默認4.8.5
g++ -v 或者 gcc --version
2、下載gcc源碼(10.2.0)
wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
3、解壓安裝包
tar -xvf gcc-10.2.0.tar.xz
4、下載依賴庫
cd gcc-10.2.0
./contrib/download_prerequisites
5、安裝系統(tǒng)必須包模塊
## 編譯常用軟件包
yum install -y gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison ncurses-devel gcc kernel-devel libtool libatomic libcurl-devel texinfo
6、生成Makefile文件
./configure --prefix=/usr/local/gcc-10.2.0 --enable-bootstrap --enable-languages=c,c++ --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib
7、編譯
make -j4
8、安裝
make install
9、配置libstdc++.so
查看libstdc++.so
find / -name "libstdc++.so*"
進入libstdc++.so配置目錄
cd /usr/lib64
#備份
mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak
mv /usr/lib64/libstdc++.so /usr/lib64/libstdc++.so.bak
mv /usr/bin/gcc /usr/bin/gcc485
mv /usr/bin/g++ /usr/bin/g++485
mv /usr/bin/c++ /usr/bin/c++485
mv /usr/bin/cc /usr/bin/cc485
#創(chuàng)建新軟連
ln -s /usr/local/gcc-10.2.0/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-10.2.0/bin/g++ /usr/bin/g++
ln -s /usr/local/gcc-10.2.0/bin/c++ /usr/bin/c++
ln -s /usr/local/gcc-10.2.0/bin/gcc /usr/bin/cc
ln -s /usr/local/gcc-10.2.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so.6
ln -s /usr/local/gcc-10.2.0/lib64/libstdc++.so.6.0.28 /usr/lib64/libstdc++.so
# 驗證
gcc --version
方法二:
https://mirrors.aliyun.com/centos-vault/7.5.1804/sclo/x86_64/rh/
https://mirrors.aliyun.com/centos/7.9.2009/sclo/x86_64/rh/Packages/d/
CentOS 7官方源的gcc最新版本是4.8.5,發(fā)布于2015年,年代久遠且不支持c++14。要編譯c++14及以上項目,必須要升級現(xiàn)有版本或者安裝高版本的gcc。紅帽其實已經(jīng)編譯好了高版本的gcc,但未更新到base和epel這兩個常用源中,而是將這些版本放在scl中。
##列出GCC版本yum list |grep devtoolset |grep gcc.x86_64
1、安裝centos-release-scl
sudo yum install centos-release-scl
2、 安裝devtoolset,
注意,如果想安裝7.版本的,就改成devtoolset-7,以此類推
sudo yum install devtoolset-8*
3、 激活對應的devtoolset,
所以你可以一次安裝多個版本的devtoolset,需要的時候用下面這條命令切換到對應的版本
# 官方推薦的加載命令
scl enable devtoolset-8 bash
# 第2種 執(zhí)行安裝軟件自帶的腳本,可以寫入啟動腳本中
source /opt/rh/devtoolset-x/enable #x為要啟用的版本。
gcc -v
這條激活命令只對本次會話有效,重啟會話后還是會變回原來的4.8.5版本,要想隨意切換可按如下操作
首先,安裝的devtoolset是在 /opt/rh
目錄下的,
每個版本的目錄下面都有個 enable 文件,如果需要啟用某個版本,只需要執(zhí)行
source ./enable
4、 直接替換舊的gcc
舊的gcc是運行的/usr/bin/gcc
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
二、升級 gdb
下載鏡像
2.1 獲取
wget https://ftp.gnu.org/gnu/gdb/gdb-8.3.1.tar.gz
2.2 編譯
cd gdb-8.3.1/
./configure
make -j4
make install
建議在安裝gcc前,先裝gdb的升級,gdb的升級不能用太高版本的gcc編繹,或者在編繹時指定低版本的gcc。
CC=/usr/local/gcc/bin/gcc ./configure
三、升級 cmake
install
3.1 獲取CMake源碼包
wget https://cmake.org/files/v3.16/cmake-3.16.9.tar.gz
3.2 解壓
tar xvzf cmake-3.16.9.tar.gz
3.3 編譯安裝
cd cmake-3.16.9/
./bootstrap --prefix=/usr/local/cmake
make -j4
# 卸載舊版本
yum remove cmake -y
make install
3.4 配置
vi /etc/profile
#增加一行:
export PATH=$PATH:/usr/local/cmake/bin
gcc/g++ 頭文件和庫文件搜索路徑
gcc/g++ 頭文件和庫文件搜索路徑
一、GNU Make
GNU Make官網(wǎng)
DOC
GNU Make是一個工具,它可以控制從程序的源文件生成可執(zhí)行文件和其他非源文件。
二、configure 配置選項
-help
輸出幫助信息.即使是有經(jīng)驗的用戶也偶爾需要使用使用’–help’選項,因為一個復雜的項目會包含附加的選項.例如,GCC包里的’configure’腳本就包含了允許你控制是否生成和在GCC中使用GNU匯編器的選項.
–prefix=$Home/cdvs_bin_for_arm
這里是最終生成可執(zhí)行文件的安裝目錄也就是exe的存放目錄??梢愿鶕?jù)自己的需要調(diào)整。
libstdc++
libstdc++
是 GCC對 C++ Standard Library 的實現(xiàn)。
libc++
是 clang
的實現(xiàn)。
libsupc++
是libstdc++
的子集,可以在github找到libsupc++,它是libstdc++的一個子文件夾:libsupc++
包含C++最核心的一部分功能,比如:
內(nèi)存分配:operator new, operator delete等
異常處理
run-time type information (RTTI):dynamic_cast,typeinfo類等
初始化列表:定義了template initializer_list
…
常見錯誤:
1、xgcc: fatal error: cannot execute ‘cc1plus’: execvp: No such file or directory
g++ --version
gcc --version
沒有版本號的話下載
有的話
運行:
find / -name "cc1plus"
添加到環(huán)境變量:
export PATH="$PATH:/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/"
2、 /usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-32.h: No such file or directory
64位linux 提示這個問題
這個問題是由于缺少32位兼容包,解決辦法:
Ubuntu:sudo apt-get install libc6-dev-i386
CentOS:yum -y install glibc-devel.i686
3 Linux中Rust 報錯linker ‘cc’ not found
-
是因為 gcc 沒有裝
-
還有一種情況就是軟鏈接被移除,
重新建立軟鏈接
ln -s gcc cc
4、Rust編譯libclang錯誤
錯誤:thread ‘main’ panicked at 'Unable to find libclang: "the libclang shared library at /usr/lib64/clang-private/libclang.so.7 could not be opened
解決:
$ rpm -qa | grep "llvm-private"
$ rpm -e --nodeps llvm-private-7.0.1-1.el7.x86_64
$ yum install -y clang llvm
錯誤:thread ‘main’ panicked at 'libclang function not loaded: clang_getTranslationUnitTargetInfo. This crate requires that libclang 3.9 or later be installed on your system, clang版本過低了,centos 7默認是3.4
解決:文章來源:http://www.zghlxwxcb.cn/news/detail-425477.html
$ yum install llvm-toolset-7
$ scl enable llvm-toolset-7 bash #激活clang并檢查版本,clang相關(guān)依賴已經(jīng)全部安裝了
LLVM架構(gòu)
深入理解 LLVM架構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-425477.html
到了這里,關(guān)于centos7 升級 gcc 版本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!