1. 程式人生 > >gcc、g++、make的安裝

gcc、g++、make的安裝

前言

《鳥哥的Linux私房菜基礎學習篇(第三版)》是一本很不錯的Linux使用說明書,也是所有剛開始接觸Linux的人一開始最應該看的一本書,作者用自己細膩的心思為Linux的後來者開啟了一扇窗。

通過對Linux的熟悉之後,我們可以通過跨平臺的QT來增加自己對Linux學習的興趣。如果對網路程式設計比較感興趣的話,可以瞭解一下Libevent庫,可以看看《UNIX環境高階程式設計》、《UNIX網路程式設計卷1:套介面APIX/Open傳輸介面API》、《UNIX網路程式設計卷2:程序間通訊》和《TCP/IP1:協議》等書。

如果對硬體比較感興趣,那麼《嵌入式Linux應用開發完全手(韋東山

)》和《裝置驅動開發詳解第二版(宋寶華)》是嵌入式Linux驅動部分兩本很好的書。如果對看書覺得學習比較吃力的話,國嵌和韋東山的視訊將會是最好的同伴了。建議的學習順序是國嵌、韋東山的書和視訊、宋寶華的書。

gccg++make的安裝

作者:(vianowu)           

本期關鍵詞:    gcc   g++   make  yum

本期擴充套件關鍵詞:bridge (橋接)  NAT(地址翻譯)  mirrorlist(映象列表)

平臺: CentOS6.0   VMware Workstation

由於以前用的紅帽軟體企業版5.0不用自己安裝gcc工具,所以我竟然笨笨的以為gcc

工具是它自己提供的。看來很可笑。

1.驗證方法

在安裝好的系統桌面空白處右擊,開啟終端。在命令列中輸入:

#gcc

如果返回資訊是:

bash: qt: command not found

則表示沒有安裝gcc

如果返回資訊是:

gcc: no input files

則表示已安裝好gcc了。

2.安裝方法

如果沒有安裝gcc,我們應該如何安裝gcc呢?

如果安裝的虛擬機器映象是ubuntu或者還是debian的話,那麼可以參考《嵌入式Linux應用開發完全手(韋東山)》第2章“嵌入式Linux開發環境構建” 第21頁的“apt-get”更新程式列表。如果所安裝的虛擬機器映象是CentOS

的話,那麼就要用yum命令更新列表了。

以下是在CentOS6.0的環境下執行的相關命令。

首先,網上百度的資料有兩個方法:第一種是下載gcc的安裝包,自己編譯。(這個方法本身有問題,因為gcc安裝包如果要安裝在linux上,也需要編譯,但是此時gcc又還沒有安裝,怎麼編譯呢?所以陷入了先有雞還是先有蛋的邏輯混亂問題了。)

第二種方法是:

安裝gcc工具

#yum  y  install  gcc

安裝g++工具

#yum  y  install  gcc-c++

安裝make

#yum  install  make 

命令yum updata主要是完成對程式列表的更新,通過對內部的資料庫更新來確定哪些程式已經安裝、哪些沒有安裝、哪些有新版本。yum將使用這個資料庫來確定怎樣安裝使用者指定的程式,並找到和安裝它所依賴的其他程式。

切記要保證能上網啊!

(檢查網路圖示、ping一下、確認網絡卡連線方式是橋接還是nat

3.問題解答

安裝方法的實現,需具備以下執行條件:

第一:Linux可以ping通(物理的鏈路層是通的);

如:

# ping ww.baidu.com

PING ps_other.a.shifen.com (220.181.111.85) 56(84) bytes of data.

64 bytes from 220.181.111.85: icmp_seq=1 ttl=53 time=38.3 ms

64 bytes from 220.181.111.85: icmp_seq=2 ttl=53 time=38.0 ms

64 bytes from 220.181.111.85: icmp_seq=3 ttl=53 time=37.9 ms

這說明了網路的物理連線是通的。但不代表就可以上網獲取資料。這個現象猶如有時候在公司可以上QQ聊天,但是打不開網頁。因為主機沒有連上網頁的域名伺服器,解析不了網頁的IP地址,而騰訊的QQ有自己的域名伺服器。

如果沒ping通可以先用ifconfig看一下是否配置了LinuxIP地址。

#ifconfig

如果沒有的話,可以用以下命令設定IP(其中,eth0 還是eth1根據上面ifconfig輸出的資訊知道的)

#sudo  ifconfig  eth0  192.168.1.17

#sudo  ifconfig  eth0  down

#sudo  ifconfig  eth0   up

同時檢視一下,是否沒有連線網路。在網路連結的圖示上左擊檢視是否連線了,沒有連線請連上“system eth0”。

第二:Linux可以開啟網頁(網路是通的);

在我們公司網路的登陸是需要錄入使用者名稱和密碼的。如果我們的Linux虛擬機器的網絡卡(Network Adapte)是用“bridged(橋接)”方式的話,那麼Linux虛擬機器的網路登陸使用者名稱需和windowsXP主機的登陸使用者名稱不同,要不然的話,先登陸的(比如說windowsXP)會給後登陸的(Linux)擠下線(不過,這樣的影響也不大,只是不能同時上網而已,實在要同時上網就多用一個使用者名稱也可以啦)。

而如果是Linux虛擬機器的網絡卡(Network Adapter)是用“NAT(網路地址翻譯網路)”,則可以WindowsXpLinux同時用一個登陸使用者名稱上網,也可以在我們的主機沒有接網線的時候,Linux虛擬機器和WindowsXP通過網路通訊。

以下是BridgeNAT兩種網路拓撲結構的簡單描述:

NAT網路連線方式下,PC機的IP地址為10.10.32.205時,虛擬機器V1V2IP地址分別為192.168.112.1192.168.206.1。兩者處於不同網段。此時,PC機為虛擬機器的閘道器,PC和虛擬機器對上一層網路只用一個PCIP地址。這也是韋東山書中所說的不同網段指的意思。所以才可以同時用一個使用者名稱登陸。

    PS:判斷是否同一網段:將PC機的IP地址與子網掩碼“相與”,得到的就是PC機的網段。然後將虛擬機器的IP地址和子網掩碼“相與”,得到虛擬機器的網段。比較兩個網段是否相同。

bridged網路連線方式下,PC機的IP地址為10.10.32.205時,虛擬機器V1V2IP地址分別為10.10.32.10110.10.32.204。兩者處於同一網段。這也是韋東山書中所說的同一網段指的意思。由於各自的IP地址不同,所以需要用不同使用者名稱才能在公司的網路裡同時登陸。

擴散思維:

    那麼有的人可能會問怎麼設定這個網絡卡的連線方式呢?在虛擬機器的還沒有開啟的時候,在“Devices”下有一個“Network Adapter(網絡卡)”的選型。

在單擊“Network Adapter(網絡卡)”選項後,彈出對話方塊。

    在對話方塊中選擇“NAT”,“ok”就可以將橋接方式改為網路轉換協議了。但是這樣之後,就不能用cuteFTP遠端工具和Linux傳資料了。(詳見第一天)

第三:yum  y  install  gcc可以開始下載了。

    按照以上方式執行的時候,我執行第一步“yum  y  install  gcc”就出現了“Could not retrieve mirrorlist”不能檢索到映象列表的錯誤提醒。這時候意識到是映象列表更新的問題。

登陸網易開源映象站網站,檢視“centos使用幫助”。下載對應版本的CentOS6-Base-163.repo 檔案。按照網頁的提示,在備份好原本的.repo檔案之後,將網路下載的.repo檔案放Linux虛擬機器的/etc/yum.repos.d資料夾中,(如果有需要的話,需將下載的檔名稱改為CentOS-Base.repo)然後執行yum makecachehttp://mirrors.163.com/.help/CentOS6-Base-163.repo

#yum  makecache

在執行以上命令之後,還是會有可能出現別的錯誤,它也提示了“suggestionrun yum clean metadata”。

# yum clean metadata

# yum  makecache

安裝gcc工具

#yum  y  install  gcc

安裝g++工具

#yum  y  install  gcc-c++

安裝make

#yum  install  make 

通過以上步驟就完成了對gccg++make的安裝了。根據網易開源映象站網站上的說明,網站會每五個小時更新一次。如果我們需要對軟體包進行升級的話,可以執行yum updata的命令。

執行的過程中,切記要讓虛擬機器上網啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!