沒記錯的話現在gcc的最新版本是4.2.2,但是某些軟件的編譯還要用到gcc4之前版本中的一些特性,某些是gcc4所不支持的,所以必須要用
gcc3.X或者gcc2.9.X。現在的Linux發行版一般都安裝了gcc4.x,同時也會保留gcc3.x,一般不需要用戶自己安裝。如果系統沒有
或者已損壞,就不得不自己動手了~本文以在Redflag Linux 6上安裝gcc3.4.6為例,介紹了gcc的安裝過程。
安裝之前,首先要確保系統中有cc或者gcc等編譯器,并且是可用的。還要把環境變量CC指向你系統上的編譯器。如果系統上沒有編譯器,則不能編譯安裝
gcc源碼,可以選擇別人做好的gcc二進制安裝包(RPM,DEB等)直接安裝。本文介紹的是以源代碼形式提供的gcc軟件包的安裝過程,此安裝過程同
樣適用于其它Linux和Unix系統。
系統上原來的gcc編譯器可能是把gcc等命令文件、庫文件、頭文件等分別存放到系統中的不同目錄下的。但是由于gcc沒有uninstall功能,所以建議把gcc的所有文件安裝到同一目錄下。安裝步驟如下:
1. 下載
在gcc網站上(http://gcc.gnu.org/)或者通過百度一下找到下載資源。目前gcc的最新版本為
4.2.2,我用的是3.4.6。可供下載的文件一般有兩種形式:gcc-3.4.6.tar.gz和gcc-3.4.6.tar.bz2,二者只是壓縮
格式不一樣,內容都是一樣的,隨便選一個下載就行了。在這里提供一個國內的下載站點:
ftp://linuxforum.net/ftp.gcc.gnu.org/
2. 解壓縮
你可以直接在下載的文件上點右鍵解壓文件。或者可以根據你所下載的文件,在命令行下選擇下面相應的命令解壓縮:
tar xzvf gcc-3.4.6.tar.gz
或者
bzcat gcc-3.4.6.tar.bz2 | tar xvf -
解壓生成的gcc-3.4.6這個目錄我們稱為源目錄,用${srcdir}表示。下文中出現的${srcdir}應該用真實的路徑來替換。
在${srcdir}/INSTALL目錄下有詳細的gcc安裝說明,內容實在是過于詳細,以致于我懶得看了。如果你有耐心,可以安裝安裝說明自己安裝。如果你也懶得看,那就繼續看下面我的安裝過程。
3. 建立目標目錄
目標目錄我們用${objdir}表示,用來存放編譯出來的文件gcc。最好不要把編譯生成的文件放在源目錄${srcdir]中,那樣感覺有點亂。我們把這些文件存放在另外一個目錄中,注意不能是${srcdir}的子目錄。
在這里,我建了一個與源目錄${srcdir}同級的目錄,叫 gcc-build 。當然這目錄的名字可以隨便取。
mkdir gcc-build
cd gcc-build
下面的操作主要是在目標目錄 ${objdir} 下進行,同樣的,在下面的命令中用你的真實路徑替換${objdir}。
4. 配置
配置的目的是決定將gcc編譯器安裝到什么地方(${destdir}),支持什么語言以及指定其它一些選項等。其中,${destdir}不能與${objdir}或${srcdir}目錄相同。
配置是通過執行${srcdir}下的configure來完成的。其命令一般格式為:
${srcdir}/configure --prefix=${destdir} [其它選項]
在這里,我要把gcc3.4.6安裝到/usr/local/gcc-3.4.6目錄下,${destdir}就表示/usr/local/gcc-3.4.6。
下面是我安裝的時候選擇的配置:
../gcc-3.4.6/configure --prefix=/usr/local/gcc-3.4.6
--enable-threads=posix --disable-checking
--host=pc-redflag-linux --with-system-zlib --enable-languages=c,c++,objc
其中
--host=pc-redflag-linux是因為我安裝的時候用的紅旗Linux,根據自己使用的系統改掉即可。
--enable-threads=posix 是使編譯使用posix多線程模型,從網上找的有人說此項為Linux系統默認,按說應該不會有問題。網友qiu建議將--enable-threads=posix的posix改為single,并且去掉--host=pc-redflag-linux,這樣會更加普遍適用于不同的機型,各位酌情處理。
其中選項的具體作用請參照gcc提供的說明(gcc-3.4.6/INSTALL/configure.html)。
這里要注意一點,--disable-checking最好帶著,我安裝的時候enable-checking時,configure通過后在下面的編譯
過程中,程序會check所有gcc自帶的編譯器,在check
Ada的時候出錯了,導致安裝失敗。如果你夠牛,可以自己搞定最好,如果不行就不要check了,反正也沒大有影響。
5. 編譯
執行make命令。這個過程比較耗費時間,大概10來分鐘的樣子。
PS:我cpu PM750,1.86MHz,紅旗是在虛擬機里裝的。。
6. 安裝
執行下面的命令會把編譯好的文件拷貝到${destdir}目錄中(根據你設定的路徑,可能需要管理員的權限,如果你用的root登錄那就沒問題,如果不是那就根據自己的系統使用root權限):
make install
文件拷完了gcc3.4.6安裝過程也就完成了。
6. 其它設置
GCC 3.4.6的所有文件,包括命令文件(如gcc、g++)、庫文件等都在${destdir}目錄下分別存放,如命令文件放在bin目錄下、庫文件在 lib下、頭文件在include下等。
6.1 gcc、g++的設置
which gcc
在我的系統上,上述命令顯示:/usr/bin/gcc。所以系統原來的gcc命令在/usr/bin目錄下。我們可以把gcc 3.4.6中的gcc、g++等命令在/usr/bin目錄下分別做一個符號連接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc34
% ln -s ${destdir}/bin/g++ g++34
這樣,就可以分別使用gcc34、g++34、gcj34來調用GCC 3.4.6的gcc、g++來編譯程序了。與此同時,系統中原來帶有的其版本的gcc編譯器中的gcc、g++等命令仍然可以使用。
6.2 庫路徑的設置
將${destdir}/lib路徑添加到環境變量LD_LIBRARY_PATH中,最好添加到系統的配置文件中,這樣就不必要每次都設置這個環境變量了。
如果GCC 3.4.6安裝在/usr/local/gcc-3.4.6目錄下,在RedFlag Linux下可以直接在命令行上執行或者在文件/etc/profile中添加下面一句:
setenv LD_LIBRARY_PATH /usr/local/gcc-3.4.6/lib:$LD_LIBRARY_PATH
至此,我們的gcc就安裝成功了,可以隨便寫個helloworld試試~~
posted on 2009-12-06 13:38
老馬驛站 閱讀(903)
評論(0) 編輯 收藏 引用 所屬分類:
linux