1、下載升級包所需軟體 boost_1_60_0.tar.gz http://www.boost.org/users/history/version_1_60_0.html gcc 4.8.0.tar.gz http://ftp.gnu.org/gnu/gcc/gcc 4.8.0/ 必須 isl 0 ...
1、下載升級包所需軟體
boost_1_60_0.tar.gz http://www.boost.org/users/history/version_1_60_0.html
gcc-4.8.0.tar.gz http://ftp.gnu.org/gnu/gcc/gcc-4.8.0/ 必須
isl-0.11.1.tar.gz http://isl.gforge.inria.fr/ 必須
mpc-1.0.3.tar.gz http://ftp.heanet.ie/mirrors/gnu/mpc/ 必須
cloog-0.18.1.tar.gz ftp://gcc.gnu.org/pub/gcc/infrastructure/ 必須
gmp-5.1.3.tar.gz http://ftp.yz.yamagata-u.ac.jp/pub/GNU/gmp/ 必須
libelf-0.8.13.tar.gz http://www.mr511.de/software/english.html 必須
mpfr-3.1.3.tar.gz http://ftp.gnu.org/gnu/mpfr/ 必須
2、依次安裝相關的軟體
- Gmp
tar -jxvf gmp-6.1.0.tar.bz2
cd gmp-6.1.0
./configure --prefix=/usr/local/gmp
make -j 4 && make install && echo $?
- Mpfr
tar -zxvf mpfr-3.1.3.tar.gz
cd mpfr-3.1.3
./configure --with-gmp-include=/usr/local/gmp/include \
--with-gmp-lib=/usr/local/gmp/lib \
--prefix=/usr/local/mpfr
make -j 4 && make install && echo $?
- Mpc
tar -zxvf mpc-1.0.3.tar.gz
cd mpc-1.0.3
./configure --with-mpfr-include=/usr/local/mpfr/include \
--with-mpfr-lib=/usr/local/mpfr/lib \
--with-gmp-include=/usr/local/gmp/include \
--with-gmp-lib=/usr/local/gmp/lib \
--prefix=/usr/local/mpc
make -j 4 && make install && echo $?
- Isl
tar -zxvf isl-0.11.tar.gz
cd isl-0.11
./configure --with-gmp-prefix=/usr/local/gmp --prefix=/usr/local/isl
make -j 4 && make install && echo $?
- Cloog
tar -zxvf cloog-0.18.0.tar.gz
cd cloog-0.18.0
./configure --with-gmp-prefix=/usr/local/gmp \
--with-isl-prefix=/usr/local/isl \
--prefix=/usr/local/cloog
make -j 4 && make install && echo $?
- Gcc
tar -zxvf gcc-4.8.0.tar.gz
cd gcc-4.8.0
編譯安裝gcc是需要指定各個依賴庫的文件目錄
vi /etc/ld.so.conf
/usr/local/isl/lib
/usr/local/cloog/lib
/usr/local/mpc/lib
/usr/local/mpfr/lib
/usr/local/gmp/lib
保存、退出後執行命令 ldconfig
./configure \
--with-mpfr=/usr/local/mpfr \
--with-gmp=/usr/local/gmp \
--with-mpc=/usr/local/mpc \
--with-mpfr-include=/usr/local/mpfr/include \
--with-mpfr-lib=/usr/local/mpfr/lib \
--with-gmp-lib=/usr/local/gmp/lib \
--with-gmp-include=/usr/local/gmp/include \
--with-mpc-lib=/usr/local/mpc/lib \
--with-mpc-inclue=/usr/local/mpc/include \
--with-isl-include=/usr/local/isl/include \
--with-isl-lib=/usr/local/isl/lib/ \
--with-cloog-include=/usr/local/cloog/include \
--with-cloog-lib=/usr/local/cloog/lib \
--enable-languages=c,c++,objc,fortran,obj-c++,java \
--enable-threads=posix \
--disable-multilib \
--with-pkgversion='SUSE Linux'
make -j 4 && make install && echo $?
3、驗證
gcc -v
4、報錯解決
1)解壓gcc安裝包直接編譯
錯誤信息:
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify their locatio
錯誤原因:
對gcc源碼編譯安裝,需要GMP 4.2+,MPFR 2.4.0+ and MPC 0.8.0+的事先安裝,如果檢測不到預設頭文件和庫文件里存在上述安裝包文件,則會報錯。
解決方案:
通過安裝gmp,mpfr,mpc安裝包,並指定其庫文件路徑進行編譯gcc即可,具體版本和安裝步驟詳細參考上述安裝步驟。
安裝gmp,mpfr,mpc後執行下麵編譯腳本進行編譯
./configure --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp --with-mpc=/usr/local/mpc --with-mpfr-include=/usr/local/mpfr/include --with-mpfr-lib=/usr/local/mpfr/lib --with-gmp-lib=/usr/local/gmp/lib --with-gmp-include=/usr/local/gmp/include --with-mpc-lib=/usr/local/mpc/lib --with-mpc-inclue=/usr/local/mpc/include --enable-languages=c,c++ --enable-threads=posix --disable-multilib
2)編譯mpc安裝包出錯
錯誤信息:
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/libmpfr.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [libmpc.la] Error 1
make[2]: Leaving directory `/tools/PXC/gcc/mpc-1.0.3/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tools/PXC/gcc/mpc-1.0.3'
make: *** [all] Error 2
錯誤原因:
編譯mpc源碼時,沒有指定gmp、mpfr對應的安裝路徑(主要是庫文件和頭文件路徑)
解決方案:
在編譯腳本裡加入相應的gmp、mpfr安裝路徑或者庫文件+頭文件路徑
./configure --with-mpfr-include=/usr/local/mpfr/include --with-mpfr-lib=/usr/local/mpfr/lib --with-gmp-include=/usr/local/gmp/include --with-gmp-lib=/usr/local/gmp/lib --prefix=/usr/local/mpc
或者
./configure --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp --prefix=/usr/local/mpc
3)帶gmp、mpfr、mpc編譯參數,編譯gcc源碼出錯
錯誤信息:
conftest.c:10:25: error: isl/version.h: No such file or directory
錯誤原因:
沒安裝isl安裝包
解決方案:
安裝isl-0.11.1.tar.gz,具體安裝步驟參照上面內容。
4)源碼編譯isl出錯
錯誤信息:
./.libs/libisl.so: undefined reference to `__gmp_get_memory_functions'
collect2: ld returned 1 exit status
make[2]: *** [isl_cat] Error 1
./.libs/libisl.so: undefined reference to `__gmp_get_memory_functions'
collect2: ld returned 1 exit status
make[2]: *** [isl_polyhedron_detect_equalities] Error 1
make[2]: Leaving directory `/tools/PXC/gcc/isl-0.12.2'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tools/PXC/gcc/isl-0.12.2'
make: *** [all] Error 2
錯誤原因:
isl編譯安裝,需要在指定gmp的安裝路徑
解決方案:
在編譯參數里指定gmp的安裝路徑,並且格式為--with-gmp-prefix==,不能用--with-gmp
./configure --with-gmp-prefix=/usr/local/gmp --prefix=/usr/local/isl
參考文件:https://groups.google.com/forum/#!msg/isl-development/ejZLCmty4Nc/PrKXb9noTCoJ
5)安裝完gmp,mpfr,mpc,isl後,源碼編譯gcc出錯
錯誤信息:
configure:6098: gcc -c -g -O2 -DCLOOG_INT_GMP -I/usr/local/isl/include -I/usr/local/gmp/include -I/usr/local/mpfr/include -I/usr/local/mpc/include conftest.c >&5
conftest.c:10:27: error: cloog/version.h: No such file or directory
conftest.c: In function 'main':
conftest.c:15: error: 'choke' undeclared (first use in this function)
conftest.c:15: error: (Each undeclared identifier is reported only once
conftest.c:15: error: for each function it appears in.)
conftest.c:15: error: expected ';' before 'me'
錯誤原因:
缺少安裝包cloog,沒找到相應的庫文件。
解決方案:
安裝cloog-0.18.1.tar.gz ,具體安裝步驟參照上面安裝步驟,安裝cloog後,繼續編譯gcc
./configure --with-mpfr=/usr/local/mpfr --with-gmp=/usr/local/gmp --with-mpc=/usr/local/mpc --with-mpfr-include=/usr/local/mpfr/include --with-mpfr-lib=/usr/local/mpfr/lib --with-gmp-lib=/usr/local/gmp/lib --with-gmp-include=/usr/local/gmp/include --with-mpc-lib=/usr/local/mpc/lib --with-mpc-inclue=/usr/local/mpc/include --with-isl-include=/usr/local/isl/include --with-isl-lib=/usr/local/isl/lib/ --with-cloog-include=/usr/local/cloog/include --with-cloog-lib=/usr/local/cloog/lib --enable-languages=c,c++ --enable-threads=posix --disable-multilib --disable-bootstrap --disable-libstdcxx-pch
6)安裝cloog遇到下屬錯誤
錯誤信息:
./conftest: error while loading shared libraries: libisl.so.10: cannot open shared object file: No such file or directory
錯誤原因:
找不到isl的庫文件,需要在/etc/ld.so.conf中添加以下內容/usr/local/isl/lib,並通過ldconfig使其生效。
解決方案:
通過LD_LIBRARY_PATH指定isl庫文件路徑或者在/etc/ld.so.conf中添加以下內容/usr/local/isl/lib,並通過ldconfig使其生效。然後通過相應的編輯參數指定isl的庫文件和頭文件,進行cloog編譯安裝。通過strings /etc/ld.so.cache | grep libisl 查看是否已經將庫文件寫入緩存。
7)下屬錯誤可以忽略
錯誤信息01:
conftest.cpp:11:2: error: #error -static-libstdc++ not implemented
8)下屬錯誤可以忽略
錯誤信息:
ldconfig: /usr/local/isl/lib/libisl.so.10.1.0-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
錯誤原因:
/usr/local/isl/lib/libisl.so.10.1.0-gdb.py 文件類型錯誤
解決方案:
rm /usr/local/isl/lib/libisl.so.10.1.0-gdb.py
5、參考文檔
http://stackoverflow.com/questions/9450394/how-to-install-gcc-piece-by-piece-with-gmp-mpfr-mpc-elf-without-shared-libra
https://groups.google.com/forum/#!msg/isl-development/ejZLCmty4Nc/PrKXb9noTCoJ