最佳實踐 | 源碼升級gcc

来源:https://www.cnblogs.com/mamingzhao/archive/2019/01/17/10285396.html
-Advertisement-
Play Games

1、下載升級包所需軟體 boost_1_60_0.tar.gz http://www.boost.org/users/history/version_1_60_0.html gcc 4.8.0.tar.gz http://ftp.gnu.org/gnu/gcc/gcc 4.8.0/ 必須 isl 0 ...


1、下載升級包所需軟體

boost_1_60_0.tar.gz     http://www.boost.org/users/history/version_1_60_0.html

gcc-4.8.0.tar.gz        http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/            必須

isl-0.11.1.tar.gz       http://isl.gforge.inria.fr/                      必須

mpc-1.0.3.tar.gz        http://ftp.heanet.ie/mirrors/gnu/mpc/            必須

cloog-0.18.1.tar.gz     ftp://gcc.gnu.org/pub/gcc/infrastructure/        必須

gmp-5.1.3.tar.gz        http://ftp.yz.yamagata-u.ac.jp/pub/GNU/gmp/      必須

libelf-0.8.13.tar.gz    http://www.mr511.de/software/english.html        必須     

mpfr-3.1.3.tar.gz       http://ftp.gnu.org/gnu/mpfr/                     必須

2、依次安裝相關的軟體

  • Gmp
  tar -jxvf gmp-6.1.0.tar.bz2
  cd gmp-6.1.0
  ./configure  --prefix=/usr/local/gmp
  make -j 4 && make install && echo $?
  • Mpfr
  tar -zxvf mpfr-3.1.3.tar.gz
  cd mpfr-3.1.3
  ./configure --with-gmp-include=/usr/local/gmp/include \
    --with-gmp-lib=/usr/local/gmp/lib \
    --prefix=/usr/local/mpfr
  make -j 4 && make install && echo $?
  • Mpc
  tar -zxvf mpc-1.0.3.tar.gz
  cd mpc-1.0.3
  ./configure --with-mpfr-include=/usr/local/mpfr/include \
    --with-mpfr-lib=/usr/local/mpfr/lib \
    --with-gmp-include=/usr/local/gmp/include \
    --with-gmp-lib=/usr/local/gmp/lib \
    --prefix=/usr/local/mpc
   make -j 4 && make install && echo $?
  • Isl
  tar -zxvf isl-0.11.tar.gz
  cd isl-0.11
  ./configure --with-gmp-prefix=/usr/local/gmp --prefix=/usr/local/isl
  make -j 4 && make install && echo $?
  • Cloog
  tar -zxvf cloog-0.18.0.tar.gz
  cd cloog-0.18.0
  ./configure --with-gmp-prefix=/usr/local/gmp \
    --with-isl-prefix=/usr/local/isl  \
    --prefix=/usr/local/cloog
  make -j 4 && make install && echo $?
  • Gcc
  tar -zxvf gcc-4.8.0.tar.gz
  cd gcc-4.8.0
  編譯安裝gcc是需要指定各個依賴庫的文件目錄
  vi /etc/ld.so.conf

   /usr/local/isl/lib
   /usr/local/cloog/lib
   /usr/local/mpc/lib
   /usr/local/mpfr/lib
   /usr/local/gmp/lib
  保存、退出後執行命令 ldconfig

  ./configure \
     --with-mpfr=/usr/local/mpfr \
     --with-gmp=/usr/local/gmp \
     --with-mpc=/usr/local/mpc \
     --with-mpfr-include=/usr/local/mpfr/include \
     --with-mpfr-lib=/usr/local/mpfr/lib \
     --with-gmp-lib=/usr/local/gmp/lib \
     --with-gmp-include=/usr/local/gmp/include \
     --with-mpc-lib=/usr/local/mpc/lib \
     --with-mpc-inclue=/usr/local/mpc/include \
     --with-isl-include=/usr/local/isl/include \
     --with-isl-lib=/usr/local/isl/lib/ \
     --with-cloog-include=/usr/local/cloog/include \
     --with-cloog-lib=/usr/local/cloog/lib \
     --enable-languages=c,c++,objc,fortran,obj-c++,java \
     --enable-threads=posix \
     --disable-multilib \
     --with-pkgversion='SUSE Linux'

  make -j 4 && make install && echo $?

3、驗證

  gcc -v

4、報錯解決

 1)解壓gcc安裝包直接編譯

   錯誤信息:
   configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify their locatio
   錯誤原因:
   對gcc源碼編譯安裝,需要GMP 4.2+,MPFR 2.4.0+ and MPC 0.8.0+的事先安裝,如果檢測不到預設頭文件和庫文件里存在上述安裝包文件,則會報錯。
   解決方案:
   通過安裝gmp,mpfr,mpc安裝包,並指定其庫文件路徑進行編譯gcc即可,具體版本和安裝步驟詳細參考上述安裝步驟。
   安裝gmp,mpfr,mpc後執行下麵編譯腳本進行編譯
   ./configure --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp --with-mpc=/usr/local/mpc   --with-mpfr-include=/usr/local/mpfr/include --with-mpfr-lib=/usr/local/mpfr/lib --with-gmp-lib=/usr/local/gmp/lib --with-gmp-include=/usr/local/gmp/include --with-mpc-lib=/usr/local/mpc/lib --with-mpc-inclue=/usr/local/mpc/include --enable-languages=c,c++ --enable-threads=posix --disable-multilib

2)編譯mpc安裝包出錯
   錯誤信息:
   /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libmpfr.a: could not read symbols: Bad value
   collect2: ld returned 1 exit status
   make[2]: *** [libmpc.la] Error 1
   make[2]: Leaving directory `/tools/PXC/gcc/mpc-1.0.3/src'
   make[1]: *** [all-recursive] Error 1
   make[1]: Leaving directory `/tools/PXC/gcc/mpc-1.0.3'
   make: *** [all] Error 2
   錯誤原因:
   編譯mpc源碼時,沒有指定gmp、mpfr對應的安裝路徑(主要是庫文件和頭文件路徑)
   解決方案:
   在編譯腳本裡加入相應的gmp、mpfr安裝路徑或者庫文件+頭文件路徑
   ./configure --with-mpfr-include=/usr/local/mpfr/include  --with-mpfr-lib=/usr/local/mpfr/lib --with-gmp-include=/usr/local/gmp/include --with-gmp-lib=/usr/local/gmp/lib --prefix=/usr/local/mpc  
    或者
    ./configure --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp --prefix=/usr/local/mpc

3)帶gmp、mpfr、mpc編譯參數,編譯gcc源碼出錯
   錯誤信息:
   conftest.c:10:25: error: isl/version.h: No such file or directory
   錯誤原因:
   沒安裝isl安裝包
   解決方案:
   安裝isl-0.11.1.tar.gz,具體安裝步驟參照上面內容。

4)源碼編譯isl出錯
   錯誤信息:
   ./.libs/libisl.so: undefined reference to `__gmp_get_memory_functions'
   collect2: ld returned 1 exit status
   make[2]: *** [isl_cat] Error 1
   ./.libs/libisl.so: undefined reference to `__gmp_get_memory_functions'
   collect2: ld returned 1 exit status
   make[2]: *** [isl_polyhedron_detect_equalities] Error 1
   make[2]: Leaving directory `/tools/PXC/gcc/isl-0.12.2'
   make[1]: *** [all-recursive] Error 1
   make[1]: Leaving directory `/tools/PXC/gcc/isl-0.12.2'
   make: *** [all] Error 2
   錯誤原因:
   isl編譯安裝,需要在指定gmp的安裝路徑
   解決方案:
   在編譯參數里指定gmp的安裝路徑,並且格式為--with-gmp-prefix==,不能用--with-gmp
   ./configure    --with-gmp-prefix=/usr/local/gmp --prefix=/usr/local/isl
   參考文件:https://groups.google.com/forum/#!msg/isl-development/ejZLCmty4Nc/PrKXb9noTCoJ

5)安裝完gmp,mpfr,mpc,isl後,源碼編譯gcc出錯
   錯誤信息:
   configure:6098: gcc -c -g -O2 -DCLOOG_INT_GMP  -I/usr/local/isl/include -I/usr/local/gmp/include -I/usr/local/mpfr/include -I/usr/local/mpc/include   conftest.c >&5
   conftest.c:10:27: error: cloog/version.h: No such file or directory
   conftest.c: In function 'main':
   conftest.c:15: error: 'choke' undeclared (first use in this function)
   conftest.c:15: error: (Each undeclared identifier is reported only once
   conftest.c:15: error: for each function it appears in.)
   conftest.c:15: error: expected ';' before 'me'
   錯誤原因:
   缺少安裝包cloog,沒找到相應的庫文件。
   解決方案:
   安裝cloog-0.18.1.tar.gz ,具體安裝步驟參照上面安裝步驟,安裝cloog後,繼續編譯gcc
   ./configure --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp --with-mpc=/usr/local/mpc   --with-mpfr-include=/usr/local/mpfr/include --with-mpfr-lib=/usr/local/mpfr/lib --with-gmp-lib=/usr/local/gmp/lib --with-gmp-include=/usr/local/gmp/include --with-mpc-lib=/usr/local/mpc/lib --with-mpc-inclue=/usr/local/mpc/include  --with-isl-include=/usr/local/isl/include --with-isl-lib=/usr/local/isl/lib/ --with-cloog-include=/usr/local/cloog/include --with-cloog-lib=/usr/local/cloog/lib --enable-languages=c,c++ --enable-threads=posix --disable-multilib --disable-bootstrap --disable-libstdcxx-pch

6)安裝cloog遇到下屬錯誤
   錯誤信息:
   ./conftest: error while loading shared libraries: libisl.so.10: cannot open shared object file: No such file or directory
   錯誤原因:
   找不到isl的庫文件,需要在/etc/ld.so.conf中添加以下內容/usr/local/isl/lib,並通過ldconfig使其生效。
   解決方案:
   通過LD_LIBRARY_PATH指定isl庫文件路徑或者在/etc/ld.so.conf中添加以下內容/usr/local/isl/lib,並通過ldconfig使其生效。然後通過相應的編輯參數指定isl的庫文件和頭文件,進行cloog編譯安裝。通過strings /etc/ld.so.cache | grep libisl  查看是否已經將庫文件寫入緩存。

7)下屬錯誤可以忽略
   錯誤信息01:
   conftest.cpp:11:2: error: #error -static-libstdc++ not implemented

8)下屬錯誤可以忽略
  錯誤信息:
  ldconfig: /usr/local/isl/lib/libisl.so.10.1.0-gdb.py is not an ELF file - it   has the wrong magic bytes at the start.
  錯誤原因:
  /usr/local/isl/lib/libisl.so.10.1.0-gdb.py 文件類型錯誤
  解決方案:
  rm /usr/local/isl/lib/libisl.so.10.1.0-gdb.py

5、參考文檔

http://stackoverflow.com/questions/9450394/how-to-install-gcc-piece-by-piece-with-gmp-mpfr-mpc-elf-without-shared-libra
https://groups.google.com/forum/#!msg/isl-development/ejZLCmty4Nc/PrKXb9noTCoJ

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用NPOI導入導出excel,已經封裝好Action可以直接調用 導出 效果圖 使用方法 定義導出實體 導出Action 主要代碼 導入導出代碼 配置類型 ExcelConfig ColumnModel ExcelGridModel 示例下載地址: "代碼打包下載" ...
  • .net中的SelectList可以用於前端下拉框的內容填充 譬如:Html.DropdownList(下拉框標簽名稱, SelectList實例) 實際上,上述Html.DropdownList的第二個參數傳入的是一個SelectListItem的集合。此處使用SelectList比較直觀罷了 所 ...
  • 在 .net core 中配置項推薦用 Options 來實現,有一些參數可能必須是用由用戶來配置,不能直接寫成預設值的參數,這樣就需要就 Options 中的參數做一些校驗,否則程式內部可能就會出現一些意想不到的異常,今天介紹一個比較簡單的,通過 `PostConfigure` 的方式來實現Opt... ...
  • 有這麼個非同步方法 private static async Task Compute(int s) { return await Task.Run(() = { if (s s = new List { 1, 2, 3, 4, 5 }; List t = new List(); s.ForEach( ...
  • C# C/S程式一般通過ConfigurationManager類來讀取app.config,其中有個坑爹的地方是ConfigurationManager類自帶緩存,就如Windows服務來說,除非重啟服務,否則手動修改或者通過程式修改app.config文件是不會生效的, 需要調用Configur ...
  • 一、簡介 閱讀 Abp 源碼的過程中,自己也學習到了一些之前沒有接觸過的知識。在這裡,我在這兒針對研究學習 Abp 框架中,遇到的一些值得分享的知識寫幾篇文章。如果有什麼疑問或者問題,歡迎大家評論指正。 在本篇主要是 Scoped 範圍與 using 語句塊的使用。using 語句塊大家一定都不陌生 ...
  • 一 基礎準備 參考《002.Ceph安裝部署》文檔部署一個基礎集群; 新增節點主機名及IP在deploy節點添加解析: 參考《002.Ceph安裝部署》文檔部署一個基礎集群; 新增節點主機名及IP在deploy節點添加解析: 配置國內yum源: 配置國內yum源: 二 塊設備 2.1 添加普通用戶 ...
  • 1. 下載apache tomcat 7.0.64.tar.gz 進入tomcat官網:http://tomcat.apache.org/download 70.cgi下載相應的壓縮包: 2. 上傳安裝包到linux伺服器 在Ubuntu伺服器上創建tomcat存放目錄 $ mkdir/laiqu/ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...