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