一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

2023-05-09 18:00未知服務器之家 Linux

前言 ??編譯ubuntu驅動之前,發現使用的gcc是7.3.0,而使用apt管理和下載的都無法直接或間接安裝gcc7.3.0,于是只能從源碼安裝gcc7.3.0編譯器。 GCC 概述 ??GCC是以GPL許可證所發行的自由軟件,也是GNU計劃的關鍵部分。GCC的初衷是為

前言

??編譯ubuntu驅動之前,發現使用的gcc是7.3.0,而使用apt管理和下載的都無法直接或間接安裝gcc7.3.0,于是只能從源碼安裝gcc7.3.0編譯器。

GCC

概述

??GCC是以GPL許可證所發行的自由軟件,也是GNU計劃的關鍵部分。GCC的初衷是為GNU操作系統專門編寫一款編譯器,現已被大多數類Unix操作系統(如Linux、BSD、MacOS X等)采納為標準的編譯器,甚至在微軟的Windows上也可以使用GCC。GCC支持多種計算機體系結構芯片,如x86、ARM、MIPS等,并已被移植到其他多種硬件平臺。
??GCC原名為GNU C語言編譯器(GNU C Compiler),只能處理C語言。但其很快擴展,變得可處理C++,后來又擴展為能夠支持更多編程語言,如Fortran、Pascal、Objective -C、Java、Ada、Go以及各類處理器架構上的匯編語言等,所以改名GNU編譯器套件(GNU Compiler Collection) 。

下載gcc7.3.0源碼

??下載地址:

GCC編譯

步驟一:安裝所需要的環境

??這里肯定要上網了,要是沒有上網則只能自己去下載源碼包,然后配置、編譯和安裝三部曲了,而且還得 注意版本號,所以最好還是先安裝一次查看版本號,再去下載對應版本號的源碼,去目標機離線安裝。
??下面是configure配置gcc會出現的問題,所以需要先安裝依賴庫。
?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

sudoapt-getinstalllibgmp-devsudoapt-getinstalllibmpfr-devsudoapt-getinstalllibmpc-dev

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器
??這里安裝完,然后裝的gcc7.5, 不要卸載已有的gcc,查看“入坑一”。

步驟二:下載解壓

tarxvfgcc-7.3.0.tar.gz

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

步驟三:配置configure

./configure

??這里要增加c和c++的配置,不然編譯出來只有g++了

./configure--enable-checking=release--enable-languages=c,c++--disable-multilib

??查看 “ 入坑二”。
?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

步驟四:編譯make

make-j4

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器
??第一次編譯后再下執行幾次make -j4,最后再執行一次make,確認每個線程都正常跑完(PS:有些錯了就停止了,但是被沒停止的線程沖掉了,保持這個習慣即可避免疏忽)。
??編譯出錯。

步驟五:編譯出錯“fatal error: asm/errno.h: No such file or directory”

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器
??引入error.h的頭文件,這里查了很多asm文件夾,最后發現只有asm-generic下的才有error.h

sudofind/-nameasm

??以下的一些都沒有error.h:
?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器
??只有asm-generic下的才有error.h

sudoln-s/usr/include/asm-generic/usr/include/asm

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

??然后繼續編譯,make -j8
??編譯出錯。

步驟六:編譯出錯“sanitizer_syscall_generic.inc:15:24: error: ‘__NR_open’ was not declared in this scope”

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器
??這里錯誤實際上是前面帶進來的

sudoln-s/usr/include/asm-generic/usr/include/asm

??是錯誤的,需要更改為另外一個,這里要先刪除,否則ln新建不了:

sudorm/usr/include/asmsudoln-s/usr/include/x86_64-linux-gnu/asm/usr/include/asmls/usr/include/asmls-l/usr/include/asm

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器
??然后繼續編譯,make -j8

步驟七:編譯成功

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

步驟八:安裝

sudomakeinstall

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器
?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

步驟九:查看版本號確認

?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

入坑

入坑一:本地需要g++,否則編譯報錯

問題

??卸載了g++,編譯gcc的時候報錯:
?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器

原理

??可能跟交叉編譯一樣,交叉編譯的編譯器也是需要一個編譯器編譯交叉編譯器的源碼來生成交叉編譯器的(只不過最近幾年sdk已經自帶了交叉編譯器了)

解決

??安裝gcc,再次編譯即可。

入坑二:安裝后只有g++,沒有gcc

問題

??gcc版本是7.5,g++版本是7.3。

原理

??配置文件需要配置編譯c和c++的,默認只有c++的。

解決

??修改配置文件

./configure

??這里要增加c和c++的配置,不然編譯出來只有g++

./configure--enable-checking=release--enable-languages=c,c++--disable-multilib

??然后重新編譯走一遍流程解決。
?? Linux驅動開發筆記(二):ubuntu系統從源碼編譯安裝gcc7.3.0編譯器


延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品久久香蕉国产线看观看亚洲 | 日韩一品在线播放视频一品免费 | 99任你躁精品视频 | 久久理论片 | 动漫在线观看h | 亚洲女同一区二区 | 免费片在线观看 | 欧美日韩国产亚洲一区二区三区 | 国产精品视频在这里有精品 | 黄色大片网站 | 美女伊人网 | 金牛网155755水心论坛黄大父母 | 全日爱韩国视频在线观看 | 精品视频免费在线观看 | 好男人资源免费播放在线观看 | 91在线精品国产丝袜超清 | 欧美x×x | 91视频夜色 | 猛操女人| 国产专区日韩精品欧美色 | 教师波多野结衣在线播放 | 亚洲精品综合一区二区 | 青草视频在线观看免费网站 | 欧美a在线观看 | 国产精品每日在线观看男人的天堂 | 国内永久第一免费福利视频 | sxx免费看观看美女 sss亚洲国产欧美一区二区 | 国产亚洲精品综合在线网址 | 91热国产| 呜呜别塞了啊抽插 | 亚洲国产在线播放在线 | 女同全黄h全肉动漫 | 色老板在线视频观看 | 男人天堂新 | 18性夜影院午夜寂寞影院免费 | 天天操天天干天天舔 | 国产精品久久久免费视频 | 青青青青久久国产片免费精品 | 亚洲haose在线观看 | 日韩欧美一区二区三区中文精品 | 高h喷水荡肉爽文np肉色文 |