網站首頁 編程語言 正文
簡短介紹
大家好,今天給大家分享gcc編譯器的升級方法。在linux系統中其實已經自帶了gcc編譯器,但是版本比較低。目前有些開源工具例如:Apache Doris在安裝時需要更高版本的gcc 5.3.1+以上版本編譯器才能編譯c++代碼。那么我們就了解下gcc升級方法(從 4.8.5 升級到 10.2.0 )。
1、查看當前gcc版本
## 看出當前系統 gcc版本. 默認4.8.5g++ -v 或者 gcc --version
2、下載gcc安裝包(10.2.0版本)
## 下載地址:http://ftp.gnu.org/gnu/gcc## linux下通過 wget指令下載wget http://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
3、解壓安裝包
tar -xvf gcc-10.2.0.tar.gz## 解壓后目錄 gcc-10.2.0
4、下載依賴庫
## 進入解壓后目錄,進行依賴庫下載cd gcc-10.2.0./contrib/download_prerequisites
5、安裝系統必須包模塊
yum install -y gcc-c++ libstdc++-static ant cmake byacc flex automake libtool binutils-devel bison ncurses-devel gcc kernel-devel libtool libatomic
6、創建編譯目錄
## 在gcc-10.2.0.同級目錄,創建編譯目錄 。名稱為:gcc-build-10.2.0mkdir ../gcc-build-10.2.0
7、生成Makefile文件
## 進入編譯錄,執行命令,生成Makefile文件cd gcc-build-10.2.0../gcc-10.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
說明:
如果提示錯誤,configure: error: Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
需要將步驟4中,下載的依賴包刪除,之后重新執行下。正確的包大小如下:
8、編譯
#執行命令進行編譯,此處利用4個job,需編譯時約40分鐘,此值不宜設置過高make -j4 ## 建議使用 nohup & 執行,真心慢
9、安裝
make install ## 建議使用nohup & 執行。大概2分鐘可完成
10、配置libstdc++.so
## 驗證編譯目錄(gcc-build-10.2.0)下是否存在 libstdc++.so find . -name "libstdc++.so*"
## 進入libstdc++.so配置目錄cd /usr/lib64## 將新的libstdc++.so 拷貝到目錄下cp /root/gcc-build-10.2.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 .## 備份mv libstdc++.so.6 libstdc++.so.6.old## 創建新軟連ln -sv libstdc++.so.6.0.28 libstdc++.so.6
11、配置環境變量
## 卸載老版本 4.8.5yum remove gcc gcc-c++## 進入根目錄cd ~## 編輯當前用戶環境變量vim .bash_profile## 內容PATH=$PATH:$HOME/bin:/usr/local/bin/export CC=/usr/local/bin/gccexport CXX=/usr/local/bin/g++## 立即生效source ~/.bash_profile## 驗證gcc --version
總結
gcc升級過程中會遇到各種模塊或者包缺失問題。需要大家一個個安裝。其實這和linux系統本身環境也有一定的關系。所以有問題不要怕,解決掉就好了。相信你們可以的。
最終附一個整體安裝的小腳本
#!/bin/bash## 如下可保存 shell腳本一鍵運行cd /usr/srcwget http://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gzgcc_name_dir="gcc-10.2.0"gcc_build_name_dir="gcc-build-10.2.0"#解壓tar -xvf gcc-10.2.0.tar.gzcd ${gcc_name_dir}./contrib/download_prerequisitescd ..#建立編譯輸出目錄mkdir ${gcc_build_name_dir}#進入下面目錄,執行命令,生成Makefile文件cd ${gcc_build_name_dir}../${gcc_name_dir}/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib#執行命令進行編譯,此處利用4個job,需編譯時約40分鐘,此值不宜設置過高#sudo make -j4make -j4#安裝#sudo make installmake installexit 0## 如下需要手工操作##刪除之前 gccyum remove gcc gcc-c++##配置環境變量~/.bash_profile##版本位于目錄 /usr/local/bin/##加這個PATH=$PATH:$HOME/bin:/usr/local/bin/export CC=/usr/local/bin/gccexport CXX=/usr/local/bin/g++source ~/.bash_profile
原文鏈接:https://blog.csdn.net/weixin_39637711/article/details/110104619
相關推薦
- 2022-08-05 C++詳細講解模擬實現位圖和布隆過濾器的方法_C 語言
- 2022-05-25 flutter實現底部導航欄_Android
- 2022-04-21 catalina.out 和 catalina.log 的區別和用途
- 2022-06-25 Python編程批量實現md5加密pdf文件_python
- 2022-04-19 Android實現一個倒計時自定義控件_Android
- 2022-03-11 .NET6中使用CuteEditor詳解_實用技巧
- 2022-11-26 pytorch邏輯回歸實現步驟詳解_python
- 2022-11-06 python中defaultdict用法實例詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支