您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何從源代碼編譯安裝gcc,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
我的環境:CentOS 6.2, kernel 3.1.10 x86_64
需要的配置:Disk space >= 6GB, Mem >= 1GB
從gcc.gnu.org下載gcc-4.7.2.tar.bz2,創建/root/buid-gcc目錄,以后所有編譯都在這個目錄里進行了。
到ftp://gcc.gnu.org/pub/gcc/infrastructure/處下載以下輔助安裝包:gmp-4.3.2.tar.bz2, mpfr-2.4.2.tar.bz2, mpc-0.8.1.tar.gz
將以上bz2和gz ball全部放到/root/build-gcc目錄下。
1. 編譯gmp-4.3.2
展開gmp-4.3.2.tar.bz2:
#tar xf gmp-4.3.2.tar.bz2
#mkdir gmp-build
#cd gmp-build
#../gmp-4.3.2/configure --prefix=/root/rpmbuild/gmp-build --build=x86_64-linux
注意:--build=x86_64-linux選項對于x86_64的平臺(比如我用的這個系統)非常重要,否則,無法生成Makefile。
生成Makefile以后,用以下命令編譯:
#make
#make check
#make install
這樣就把gmp安裝到了/root/build-gcc/gmp-build目錄,gmp的安裝就完成了,/root/build-gcc/gmp-build目錄在將來安裝其他包的時候會作為參數被傳遞。
2. 編譯mpfr
#tar xf mpfr-2.4.2.tar.bz2
#mkdir mpfr-build
#cd mpfr-build
#../mpfr-2.4.2/configure --prefix=/root/build-gcc/mpfr-build/ --with-gmp=/root/build-gcc/gmp-build
#make
#make check
#make install
3.編譯mpc
#tar xf mpc-0.8.1.tar.gz
#mkdir mpc-build
#cd mpc-build
#../mpc-0.8.1/configure --prefix=/root/build-gcc/mpc-build/ --with-gmp=/root/build-gcc/gmp-build/ --with-mpfr=/root/build-gcc/mpfr-build/
#make; make check; make install
4.編譯GCC
#tar xf gcc-4.7.2.tar.bz2
#mkdir gcc-build
設置LD_LIBRARY_PATH (可選)
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/build-gcc/mpc-build/lib:/root/build-gcc/mpfr-build/lib:/root/build-gcc/gmp-build/lib
創建makefile
#../gcc-4.7.2/configure --prefix=/root/build-gcc/gcc-build/ --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/root/build-gcc/gmp-build/ --with-mpfr=/root/build-gcc/mpfr-build/ --with-mpc=/root/build-gcc/mpc-build/
Build過程中可能出現的錯誤:
有些包沒裝(雖然之前已經通過命令#yum groupinstall "Development Tools" 安裝了"Development Tools"),比如ppl和ppl-devel,可能會出現錯誤:configure: error: cannot compute suffix of object files: cannot
compile。查看日志發現錯誤記錄:
conftest.c:10:19: error: ppl_c.h: No such file or directory conftest.c:16: error: 'choke' undeclared (first use in this function) conftest.c:16: error: (Each undeclared identifier is reported only once conftest.c:16: error: for each function it appears in.) conftest.c:16: error: expected ';' before 'me'
這些錯誤可以通過命令:
#yum install ppl ppl-devel
安裝這兩個包來改正。
另外,如果嚴謹一點, make完后應該要做make -k check的,但是make -k check會報告缺少autogen這個命令,可問題在于CentOS里很難找到這個autogen,所以,馬虎點好了,make完后直接make install。
make install完成后,將會在/root/build-gcc/gcc-build/bin目錄下生成最終的可執行文件,如gcc,g++這些。而這時,/root/build-gcc/gcc-build/bin并不存在于PATH中。這就需要將新生成的gcc放到/usr/bin中,讓其“可用”了:
#ln -s /root/build-gcc/gcc-build/bin/gcc /usr/bin/gcc-4.7
#ln -s /root/build-gcc/gcc-build/bin/g++ /usr/bin/g++-4.7
注意:以上必須用絕對路徑!
其后就可以用gcc-4.7和g++-4.7命令編程序了
關于如何從源代碼編譯安裝gcc就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。