GCC(GNU Compiler Collection,GNU編譯器套件),是由 GNU 開(kāi)發(fā)的編程語(yǔ)言編譯器。它是以GPL許可證所發(fā)行的自由軟件,也是 GNU計(jì)劃的關(guān)鍵部分。GCC原本作為GNU操作系統(tǒng)的官方編譯器,現(xiàn)已被大多數(shù)類Unix操作系統(tǒng)(如Linux、BSD、Mac OS X等)采納為標(biāo)準(zhǔn)的編譯器,GCC同樣適用于微軟的Windows。 GCC是自由軟件過(guò)程發(fā)展中的著名例子,由自由軟件基金會(huì)以GPL協(xié)議發(fā)布。 GCC 原名為 GNU C 語(yǔ)言編譯器(GNU C Compiler),因?yàn)樗局荒芴幚?C語(yǔ)言。GCC 很快地?cái)U(kuò)展,變得可處理 C++。后來(lái)又?jǐn)U展能夠支持更多編程語(yǔ)言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各類處理器架構(gòu)上的匯編語(yǔ)言等,所以改名GNU編譯器套件(GNU Compiler Collection)。 本文描述如何通過(guò)編譯源碼,來(lái)升級(jí)gcc編譯版本,由于CentOS默認(rèn)gcc編譯版本4.8.5太低不能滿足需求。故此處給出一個(gè)編譯腳本。 [root@tencent ~]# mkdir /root/gcc [root@tencent ~]# cd /root/gcc [root@tencent ~]# vim upgradeGcc.sh [root@tencent ~]# chmod +x upgradeGcc.sh 下面為腳本具體內(nèi)容 #! /bin/bash #在非root用戶下,需要進(jìn)行提權(quán),使用sudo命令 #獲取GCC源碼 #sudo wget https://ftp./gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz wget https://ftp./gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz #解壓 #sudo tar -zxvf gcc-8.3.0.tar.gz tar -zxvf gcc-8.3.0.tar.gz #進(jìn)入解壓后的文件夾 cd gcc-8.3.0/ #下載安裝GCC的先決條件 #sudo ./contrib/download_prerequisites ./contrib/download_prerequisites #返回上一級(jí)目錄,建立編譯輸出目錄 cd .. #sudo mkdir bulid mkdir bulid #進(jìn)入輸出目錄,執(zhí)行如下命令,生成MakeFile文件 cd bulid/ #sudo ../gcc-8.3.0/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib ../gcc-8.3.0/configure -enable-checking=release -enable-languages=c,c++ -disable-multilib #執(zhí)行命令進(jìn)行編譯,若想加快編譯速度,可以在其后面加上-j4(利用4個(gè)job,-j8也行),此值不宜設(shè)置過(guò)高 #sudo make make #安裝 #sudo make install make install #檢查版本 gcc -v #此時(shí),雖安裝結(jié)束,但path的路徑仍為舊路徑,故需要更改path環(huán)境變量 cp /usr/local/lib64/libstdc++.so.6.0.25 /lib64 cd /lib64 rm -rf libstdc++.so.6 ln -s libstdc++.so.6.0.25 libstdc++.so.6 執(zhí)行如下命令,等待安裝完成,預(yù)計(jì)完成時(shí)間較長(zhǎng)。 [root@tencent ~]# chmod 777 /root/gcc/upgradeGcc.sh [root@tencent ~]# ./root/upgradeGcc.sh shell 中的命令既可以以腳本的方式執(zhí)行,也可以以單條命令執(zhí)行。 注:在安裝過(guò)程中,可能會(huì)出現(xiàn)沒(méi)有c++編譯環(huán)境。此時(shí)只需要安裝c++編譯環(huán)境 yum install gcc-c++ -y 如果報(bào)下類錯(cuò)誤是因?yàn)榫幾g時(shí)缺少iconv的相關(guān)lib,需要安裝iconvlib,而本地which iconv可以看到機(jī)器上是裝有iconv的(which iconv輸出結(jié)果為:/usr/local/bin/iconv)。如果你的機(jī)器也安裝了iconv,那么接著往下看,否則先安裝下再接著看。 這個(gè)問(wèn)題的原因是linux在查找動(dòng)態(tài)鏈接庫(kù)時(shí),忽視了/usr/local/lib中一系列*.so,將其添加到配置文件中,就可以解決。 checking size of off_t... configure: error: in `/tmp/vim74/src': configure: error: cannot compute sizeof (off_t) See `config.log' for more details. 解決辦法(有root權(quán)限) 1、打開(kāi)/etc/ld.so.conf這個(gè)配置文件 2、把下面這行內(nèi)容添加進(jìn)去 /usr/local/lib 3、保存文件,執(zhí)行命令:/sbin/ldconfig 解決辦法(沒(méi)有root權(quán)限) 對(duì)于非root用戶來(lái)說(shuō),/etc/ld.so.conf是read-only的,想要解決這個(gè)問(wèn)題也是有辦法的。在vim74目錄下先執(zhí)行如下命令: export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH // 為編譯器設(shè)定額外的搜索路徑 原理基本類似,修改ld.so.conf的根本原因只是為了讓編譯器在make過(guò)程中去對(duì)應(yīng)的路徑下尋找依賴,這里直接指定搜索路徑,是一個(gè)效果。 接下來(lái),再make && make install 就正常了。 本人使用的是第二個(gè)解決方案,成功解決該問(wèn)題。 ———————————————— 版權(quán)聲明:本文為CSDN博主「Nice_young」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/qq_41955653/article/details/88775031 |
|
來(lái)自: 昵稱QAb6ICvc > 《python》