在RHEL 6.4 x86_64平台上把编译器从gcc-4.4.7-3.el6.x86_64升级到最新版的编译器gcc-4.8.2
2013-11-28 08:09
681 查看
第一、现有主机操作系统平台的基本情况
1.1、软件平台和环境
[root@geosci ~]# uname -a
Linux geosci
2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@geosci ~]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile
--enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
[root@geosci ~]# rpm -qa|grep gmp
gmp-4.3.1-7.el6_2.2.x86_64
[root@geosci ~]# rpm -qa|grep mpfr
mpfr-2.4.1-6.el6.x86_64
[root@geosci ~]# rpm -qa|grep mpc
libmpcdec-1.2.6-6.1.el6.x86_64
1.2、硬件平台情况
[root@geosci proc]# more cpuinfo
processor : 0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~7
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
stepping : 9
cpu MHz : 1600.000
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr ss
e sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf
pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline
_timer aes xsave avx f16c rdrand lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid fsgsb
ase smep erms
bogomips : 6819.88
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
[root@geosci proc]# more meminfo
MemTotal: 16012772 kB
MemFree: 516516 kB
二、安装前的准备
2.1、下载
下载gmp-4.3.2.tar.bz2、mpfr-2.4.2.tar.bz2、mpc-0.8.1.tar.gz三个软件包
先创建相关空目录
[root@geosci gmp-4.3.2]# mkdir /usr/local/gmp4.3.2
[root@geosci gmp-4.3.2]# mkdir /usr/local/mpfr2.4.2
[root@geosci gmp-4.3.2]# mkdir /usr/local/mpc0.8.1
2.按顺序安装三个软件包
进入gmp-4.3.2.tar.bz2存放目录
[root@geosci gmp-4.3.2]# tar -jxf gmp-4.3.2.tar.bz2
[root@geosci gmp-4.3.2]# cd gmp-4.3.2
[root@geosci gmp-4.3.2]# ./configure --prefix=/usr/local/gmp4.3.2/
[root@geosci gmp-4.3.2]# make -j16 注:16与你CPU内核数相关,表示并行编译,可加快速度,具体可在网络上了解细节。也可以是:-j2 -j4 -j8
[root@geosci gmp-4.3.2]# make install
会出先如下一部分信息:
.....................................................................................................................................................................................................................................
Libraries have been installed in:
/usr/local/gmp4.3.2//lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
................................................................................................................................................................................................................................................
[root@geosci gmp-4.3.2]# make check
[root@geosci gmp-4.3.2]# make clean
[root@geosci mpfr-2.4.2]# tar jxf mpfr-2.4.2.tar.bz2
[root@geosci mpfr-2.4.2]# cd mpfr-2.4.2
[root@geosci mpfr-2.4.2]# ./configure --prefix=/usr/local/mpfr2.4.2/ --with-gmp=/usr/local/gmp4.3.2/ &&make -j16 &&make install &&make check &&make clean
[root@geosci mpc-0.8.1]# tar xzf mpc-0.8.1.tar.gz
[root@geosci mpc-0.8.1]# cd mpc-0.8.1
[root@geosci mpc-0.8.1]# ./configure --prefix=/usr/local/mpc0.8.1/ --with-mpfr=/usr/local/mpfr2.4.2/ --with-gmp=/usr/local/gmp4.3.2/ &&make -j16 &&make install &&make check &&make clean
三、安装GCC-4.8.2
先下载该软件包,解压到相关目录之下。
[root@geosci gcc-4.8.2]# ./configure --prefix=/usr/local/gcc4.8.2/ --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/usr/local/gmp4.3.2/ --with-mpfr=/usr/local/mpfr2.4.2/ --with-mpc=/usr/local/mpc0.8.1/
vim ~/.bash_profile 加入如下一行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib
source .bash_profile
最好重新启动操作系统。在执行下面的命令。否则,可能出现令人惊慌的而无法理解的错误。
[root@geosci gcc-4.8.2]#make -j16 注:16可以为8、4、2,因为我的PC是8核的CPU。编译结束时,尾部信息如下:
...........................................................................................................................................................................................................................................................................................
os_r16.o _cos_c4.o _cos_c8.o _cos_c10.o _cos_c16.o _tan_r4.o _tan_r8.o _tan_r10.o _tan_r16.o _sinh_r4.o _sinh_r8.o _sinh_r10.o _sinh_r16.o _cosh_r4.o _cosh_r8.o _cosh_r10.o _cosh_r16.o _tanh_r4.o _tanh_r8.o
_tanh_r10.o _tanh_r16.o _conjg_c4.o _conjg_c8.o _conjg_c10.o _conjg_c16.o _aint_r4.o _aint_r8.o _aint_r10.o _aint_r16.o _anint_r4.o _anint_r8.o _anint_r10.o _anint_r16.o _sign_i4.o _sign_i8.o _sign_i16.o _sign_r4.o _sign_r8.o _sign_r10.o _sign_r16.o _dim_i4.o
_dim_i8.o _dim_i16.o _dim_r4.o _dim_r8.o _dim_r10.o _dim_r16.o _atan2_r4.o _atan2_r8.o _atan2_r10.o _atan2_r16.o _mod_i4.o _mod_i8.o _mod_i16.o _mod_r4.o _mod_r8.o _mod_r10.o _mod_r16.o misc_specifics.o dprod_r8.o f2c_specifics.o
libtool: link: ranlib .libs/libgfortran.a
libtool: link: ( cd ".libs" && rm -f "libgfortran.la" && ln -s "../libgfortran.la" "libgfortran.la" )
make[3]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libgfortran'
make[2]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libgfortran'
make[1]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2'
[root@geosci gcc-4.8.2]# make install
...............................
libtool: install: chmod 644 /usr/local/gcc4.8.2/lib/../lib64/libatomic.a
libtool: install: ranlib /usr/local/gcc4.8.2/lib/../lib64/libatomic.a
libtool: finish: PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/sbin" ldconfig -n /usr/local/gcc4.8.2/lib/../lib64
ldconfig: /usr/local/gcc4.8.2/lib/../lib64/libstdc++.so.6.0.18-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/gcc4.8.2/lib/../lib64
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libatomic'
make[3]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libatomic'
make[2]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libatomic'
make[1]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2'
编译大约15分钟,就编译完毕了,编译时间的长短取决与你所用PC的配置的高低,以及你选用的参数:-j16/8/4/2的情况。
....................................
[root@geosci gcc-4.8.2]# make check
[root@geosci gcc-4.8.2]# make clean
[root@geosci bin]# pwd
[root@geosci bin]# ls -al
total 32556
drwxr-xr-x. 2 root root 4096 Dec 2 13:12 .
drwxr-xr-x. 8 root root 4096 Dec 2 13:12 ..
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 c++
-rwxr-xr-x. 1 root root 3086022 Dec 2 13:12 cpp
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 g++
-rwxr-xr-x. 3 root root 3079994 Dec 2 13:12 gcc
-rwxr-xr-x. 2 root root 131474 Dec 2 13:12 gcc-ar
-rwxr-xr-x. 2 root root 131386 Dec 2 13:12 gcc-nm
-rwxr-xr-x. 2 root root 131398 Dec 2 13:12 gcc-ranlib
-rwxr-xr-x. 1 root root 1630750 Dec 2 13:12 gcov
-rwxr-xr-x. 2 root root 3091414 Dec 2 13:12 gfortran
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 x86_64-unknown-linux-gnu-c++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 x86_64-unknown-linux-gnu-g++
-rwxr-xr-x. 3 root root 3079994 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc
-rwxr-xr-x. 3 root root 3079994 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-4.8.2
-rwxr-xr-x. 2 root root 131474 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-ar
-rwxr-xr-x. 2 root root 131386 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-nm
-rwxr-xr-x. 2 root root 131398 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-ranlib
-rwxr-xr-x. 2 root root 3091414 Dec 2 13:12 x86_64-unknown-linux-gnu-gfortran
这是编译后的各种编译器,我的PC上主要是C/C++/FORTRAN,够用了,基本上,因为我主要搞地球物理电磁法正反演,JAVA基本不用的,太新潮了,对于我们这个方向来说。
[root@geosci bin]# ls -al c++ g++ x86_64-unknown-linux-gnu-g++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 c++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 g++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 x86_64-unknown-linux-gnu-g++
这三个文件好像只有文件名不同,本质是一个。
[root@geosci bin]# diff c++ g++
[root@geosci bin]# diff g++ x86_64-unknown-linux-gnu-g++
用diff命令证明了这一点。
[root@geosci bin]# pwd
/usr/bin
[root@geosci bin]# ls -al g++ c++ gcc cpp gfortran ar nm ranlib gcov
-rwxr-xr-x. 1 root root 60976 Sep 20 2012 ar
-rwxr-xr-x. 4 root root 271368 Oct 19 2012 c++
-rwxr-xr-x. 1 root root 270504 Oct 19 2012 cpp
-rwxr-xr-x. 4 root root 271368 Oct 19 2012 g++
-rwxr-xr-x. 2 root root 268216 Oct 19 2012 gcc
-rwxr-xr-x. 1 root root 44128 Oct 19 2012 gcov
-rwxr-xr-x. 1 root root 283856 Oct 19 2012 gfortran
-rwxr-xr-x. 1 root root 44328 Sep 20 2012 nm
-rwxr-xr-x. 1 root root 60984 Sep 20 2012 ranlib
[root@geosci bin]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
[root@geosci bin]#
[root@geosci bin]# ln -s /usr/local/gcc4.8.2/bin/c++ c++;ln -s /usr/local/gcc4.8.2/bin/cpp cpp;ln -s /usr/local/gcc4.8.2/bin/g++ g++;ln -s /usr/local/gcc4.8.2/bin/gcc gcc;ln -s /usr/local/gcc4.8.2/bin/gcc-ar ar;ln -s /usr/local/gcc4.8.2/bin/gcc-ranlib ranlib;ln
-s /usr/local/gcc4.8.2/bin/gcov gcov;ln -s /usr/local/gcc4.8.2/bin/gfortran gfortran
[root@geosci bin]# ls -al g++ c++ gcc cpp gfortran ar nm ranlib gcovls: cannot access nm: No such file or directory
lrwxrwxrwx. 1 root root 30 Dec 2 14:41 ar -> /usr/local/gcc4.8.2/bin/gcc-ar
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 c++ -> /usr/local/gcc4.8.2/bin/c++
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 cpp -> /usr/local/gcc4.8.2/bin/cpp
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 g++ -> /usr/local/gcc4.8.2/bin/g++
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 gcc -> /usr/local/gcc4.8.2/bin/gcc
lrwxrwxrwx. 1 root root 28 Dec 2 14:41 gcov -> /usr/local/gcc4.8.2/bin/gcov
lrwxrwxrwx. 1 root root 32 Dec 2 14:41 gfortran -> /usr/local/gcc4.8.2/bin/gfortran
lrwxrwxrwx. 1 root root 34 Dec 2 14:41 ranlib -> /usr/local/gcc4.8.2/bin/gcc-ranlib
[root@geosci bin]# pwd
/usr/bin
[root@geosci bin]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc4.8.2/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/usr/local/gcc4.8.2/ --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/usr/local/gmp4.3.2/ --with-mpfr=/usr/local/mpfr2.4.2/ --with-mpc=/usr/local/mpc0.8.1/
Thread model: posix
gcc version 4.8.2 (GCC)
[root@geosci bin]#
1.1、软件平台和环境
[root@geosci ~]# uname -a
Linux geosci
2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@geosci ~]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile
--enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
[root@geosci ~]# rpm -qa|grep gmp
gmp-4.3.1-7.el6_2.2.x86_64
[root@geosci ~]# rpm -qa|grep mpfr
mpfr-2.4.1-6.el6.x86_64
[root@geosci ~]# rpm -qa|grep mpc
libmpcdec-1.2.6-6.1.el6.x86_64
1.2、硬件平台情况
[root@geosci proc]# more cpuinfo
processor : 0~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~7
vendor_id : GenuineIntel
cpu family : 6
model : 58
model name : Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
stepping : 9
cpu MHz : 1600.000
cache size : 8192 KB
physical id : 0
siblings : 8
core id : 0
cpu cores : 4
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr ss
e sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf
pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline
_timer aes xsave avx f16c rdrand lahf_lm ida arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid fsgsb
ase smep erms
bogomips : 6819.88
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:
[root@geosci proc]# more meminfo
MemTotal: 16012772 kB
MemFree: 516516 kB
二、安装前的准备
2.1、下载
下载gmp-4.3.2.tar.bz2、mpfr-2.4.2.tar.bz2、mpc-0.8.1.tar.gz三个软件包
先创建相关空目录
[root@geosci gmp-4.3.2]# mkdir /usr/local/gmp4.3.2
[root@geosci gmp-4.3.2]# mkdir /usr/local/mpfr2.4.2
[root@geosci gmp-4.3.2]# mkdir /usr/local/mpc0.8.1
2.按顺序安装三个软件包
进入gmp-4.3.2.tar.bz2存放目录
[root@geosci gmp-4.3.2]# tar -jxf gmp-4.3.2.tar.bz2
[root@geosci gmp-4.3.2]# cd gmp-4.3.2
[root@geosci gmp-4.3.2]# ./configure --prefix=/usr/local/gmp4.3.2/
[root@geosci gmp-4.3.2]# make -j16 注:16与你CPU内核数相关,表示并行编译,可加快速度,具体可在网络上了解细节。也可以是:-j2 -j4 -j8
[root@geosci gmp-4.3.2]# make install
会出先如下一部分信息:
.....................................................................................................................................................................................................................................
Libraries have been installed in:
/usr/local/gmp4.3.2//lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
................................................................................................................................................................................................................................................
[root@geosci gmp-4.3.2]# make check
[root@geosci gmp-4.3.2]# make clean
[root@geosci mpfr-2.4.2]# tar jxf mpfr-2.4.2.tar.bz2
[root@geosci mpfr-2.4.2]# cd mpfr-2.4.2
[root@geosci mpfr-2.4.2]# ./configure --prefix=/usr/local/mpfr2.4.2/ --with-gmp=/usr/local/gmp4.3.2/ &&make -j16 &&make install &&make check &&make clean
[root@geosci mpc-0.8.1]# tar xzf mpc-0.8.1.tar.gz
[root@geosci mpc-0.8.1]# cd mpc-0.8.1
[root@geosci mpc-0.8.1]# ./configure --prefix=/usr/local/mpc0.8.1/ --with-mpfr=/usr/local/mpfr2.4.2/ --with-gmp=/usr/local/gmp4.3.2/ &&make -j16 &&make install &&make check &&make clean
三、安装GCC-4.8.2
先下载该软件包,解压到相关目录之下。
[root@geosci gcc-4.8.2]# ./configure --prefix=/usr/local/gcc4.8.2/ --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/usr/local/gmp4.3.2/ --with-mpfr=/usr/local/mpfr2.4.2/ --with-mpc=/usr/local/mpc0.8.1/
vim ~/.bash_profile 加入如下一行
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-0.8.1/lib:/usr/local/gmp-4.3.2/lib:/usr/local/mpfr-2.4.2/lib
source .bash_profile
最好重新启动操作系统。在执行下面的命令。否则,可能出现令人惊慌的而无法理解的错误。
[root@geosci gcc-4.8.2]#make -j16 注:16可以为8、4、2,因为我的PC是8核的CPU。编译结束时,尾部信息如下:
...........................................................................................................................................................................................................................................................................................
os_r16.o _cos_c4.o _cos_c8.o _cos_c10.o _cos_c16.o _tan_r4.o _tan_r8.o _tan_r10.o _tan_r16.o _sinh_r4.o _sinh_r8.o _sinh_r10.o _sinh_r16.o _cosh_r4.o _cosh_r8.o _cosh_r10.o _cosh_r16.o _tanh_r4.o _tanh_r8.o
_tanh_r10.o _tanh_r16.o _conjg_c4.o _conjg_c8.o _conjg_c10.o _conjg_c16.o _aint_r4.o _aint_r8.o _aint_r10.o _aint_r16.o _anint_r4.o _anint_r8.o _anint_r10.o _anint_r16.o _sign_i4.o _sign_i8.o _sign_i16.o _sign_r4.o _sign_r8.o _sign_r10.o _sign_r16.o _dim_i4.o
_dim_i8.o _dim_i16.o _dim_r4.o _dim_r8.o _dim_r10.o _dim_r16.o _atan2_r4.o _atan2_r8.o _atan2_r10.o _atan2_r16.o _mod_i4.o _mod_i8.o _mod_i16.o _mod_r4.o _mod_r8.o _mod_r10.o _mod_r16.o misc_specifics.o dprod_r8.o f2c_specifics.o
libtool: link: ranlib .libs/libgfortran.a
libtool: link: ( cd ".libs" && rm -f "libgfortran.la" && ln -s "../libgfortran.la" "libgfortran.la" )
make[3]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libgfortran'
make[2]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libgfortran'
make[1]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2'
[root@geosci gcc-4.8.2]# make install
...............................
libtool: install: chmod 644 /usr/local/gcc4.8.2/lib/../lib64/libatomic.a
libtool: install: ranlib /usr/local/gcc4.8.2/lib/../lib64/libatomic.a
libtool: finish: PATH="/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/sbin" ldconfig -n /usr/local/gcc4.8.2/lib/../lib64
ldconfig: /usr/local/gcc4.8.2/lib/../lib64/libstdc++.so.6.0.18-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/gcc4.8.2/lib/../lib64
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libatomic'
make[3]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libatomic'
make[2]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2/x86_64-unknown-linux-gnu/libatomic'
make[1]: Leaving directory `/studio/download/programcpptool/gcc-4.8.2'
编译大约15分钟,就编译完毕了,编译时间的长短取决与你所用PC的配置的高低,以及你选用的参数:-j16/8/4/2的情况。
....................................
[root@geosci gcc-4.8.2]# make check
[root@geosci gcc-4.8.2]# make clean
[root@geosci bin]# pwd
[root@geosci bin]# ls -al
total 32556
drwxr-xr-x. 2 root root 4096 Dec 2 13:12 .
drwxr-xr-x. 8 root root 4096 Dec 2 13:12 ..
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 c++
-rwxr-xr-x. 1 root root 3086022 Dec 2 13:12 cpp
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 g++
-rwxr-xr-x. 3 root root 3079994 Dec 2 13:12 gcc
-rwxr-xr-x. 2 root root 131474 Dec 2 13:12 gcc-ar
-rwxr-xr-x. 2 root root 131386 Dec 2 13:12 gcc-nm
-rwxr-xr-x. 2 root root 131398 Dec 2 13:12 gcc-ranlib
-rwxr-xr-x. 1 root root 1630750 Dec 2 13:12 gcov
-rwxr-xr-x. 2 root root 3091414 Dec 2 13:12 gfortran
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 x86_64-unknown-linux-gnu-c++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 x86_64-unknown-linux-gnu-g++
-rwxr-xr-x. 3 root root 3079994 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc
-rwxr-xr-x. 3 root root 3079994 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-4.8.2
-rwxr-xr-x. 2 root root 131474 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-ar
-rwxr-xr-x. 2 root root 131386 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-nm
-rwxr-xr-x. 2 root root 131398 Dec 2 13:12 x86_64-unknown-linux-gnu-gcc-ranlib
-rwxr-xr-x. 2 root root 3091414 Dec 2 13:12 x86_64-unknown-linux-gnu-gfortran
这是编译后的各种编译器,我的PC上主要是C/C++/FORTRAN,够用了,基本上,因为我主要搞地球物理电磁法正反演,JAVA基本不用的,太新潮了,对于我们这个方向来说。
[root@geosci bin]# ls -al c++ g++ x86_64-unknown-linux-gnu-g++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 c++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 g++
-rwxr-xr-x. 4 root root 3089042 Dec 2 13:12 x86_64-unknown-linux-gnu-g++
这三个文件好像只有文件名不同,本质是一个。
[root@geosci bin]# diff c++ g++
[root@geosci bin]# diff g++ x86_64-unknown-linux-gnu-g++
用diff命令证明了这一点。
[root@geosci bin]# pwd
/usr/bin
[root@geosci bin]# ls -al g++ c++ gcc cpp gfortran ar nm ranlib gcov
-rwxr-xr-x. 1 root root 60976 Sep 20 2012 ar
-rwxr-xr-x. 4 root root 271368 Oct 19 2012 c++
-rwxr-xr-x. 1 root root 270504 Oct 19 2012 cpp
-rwxr-xr-x. 4 root root 271368 Oct 19 2012 g++
-rwxr-xr-x. 2 root root 268216 Oct 19 2012 gcc
-rwxr-xr-x. 1 root root 44128 Oct 19 2012 gcov
-rwxr-xr-x. 1 root root 283856 Oct 19 2012 gfortran
-rwxr-xr-x. 1 root root 44328 Sep 20 2012 nm
-rwxr-xr-x. 1 root root 60984 Sep 20 2012 ranlib
[root@geosci bin]# gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
[root@geosci bin]#
[root@geosci bin]# ln -s /usr/local/gcc4.8.2/bin/c++ c++;ln -s /usr/local/gcc4.8.2/bin/cpp cpp;ln -s /usr/local/gcc4.8.2/bin/g++ g++;ln -s /usr/local/gcc4.8.2/bin/gcc gcc;ln -s /usr/local/gcc4.8.2/bin/gcc-ar ar;ln -s /usr/local/gcc4.8.2/bin/gcc-ranlib ranlib;ln
-s /usr/local/gcc4.8.2/bin/gcov gcov;ln -s /usr/local/gcc4.8.2/bin/gfortran gfortran
[root@geosci bin]# ls -al g++ c++ gcc cpp gfortran ar nm ranlib gcovls: cannot access nm: No such file or directory
lrwxrwxrwx. 1 root root 30 Dec 2 14:41 ar -> /usr/local/gcc4.8.2/bin/gcc-ar
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 c++ -> /usr/local/gcc4.8.2/bin/c++
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 cpp -> /usr/local/gcc4.8.2/bin/cpp
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 g++ -> /usr/local/gcc4.8.2/bin/g++
lrwxrwxrwx. 1 root root 27 Dec 2 14:41 gcc -> /usr/local/gcc4.8.2/bin/gcc
lrwxrwxrwx. 1 root root 28 Dec 2 14:41 gcov -> /usr/local/gcc4.8.2/bin/gcov
lrwxrwxrwx. 1 root root 32 Dec 2 14:41 gfortran -> /usr/local/gcc4.8.2/bin/gfortran
lrwxrwxrwx. 1 root root 34 Dec 2 14:41 ranlib -> /usr/local/gcc4.8.2/bin/gcc-ranlib
[root@geosci bin]# pwd
/usr/bin
[root@geosci bin]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc4.8.2/libexec/gcc/x86_64-unknown-linux-gnu/4.8.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ./configure --prefix=/usr/local/gcc4.8.2/ --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++,fortran --with-gmp=/usr/local/gmp4.3.2/ --with-mpfr=/usr/local/mpfr2.4.2/ --with-mpc=/usr/local/mpc0.8.1/
Thread model: posix
gcc version 4.8.2 (GCC)
[root@geosci bin]#
相关文章推荐
- rhel6.4升级gcc到4.8.2
- RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程(含安装MPFR、GMP、MPC过程)
- centos5.8 x86_64 gcc升级到4.4.7解决了编译32位程序的问题
- RHEL5.4 x86_64 GCC 4.1.2 升级到4.7.0版过程
- CentOS6.5升级手动安装GCC4.8.2 与 CentOS 6.4 编译安装 gcc 4.8.1
- CentOS 6.5 x86_64升级内核到最新版2.6.32-696.1.1.el6.x86_64
- 解决升级到最新版cocoaPods出现file was built for archive which is not the architecture being linked (x86_64)的问题
- RHEL6.3_x86_64平台安装11.2.0.3 64-bit (x86-64)
- centos6.4安装及升级gcc 4.8.2(已实践)
- 解决升级到最新版cocoaPods出现file was built for archive which is not the architecture being linked (x86_64)的问题
- Linux.5.6].rhel-server-5.6-x86_64下安装GCC的方法
- rhel-server-6.6-x86_64 openssh源码升级
- CentOS 6.6 x86_64升级内核到最新版2.6.32-642.3.1.el6.x86_64
- 网卡驱动升级[CentOS 5.5 X86_64和RHEL 5.6 X86_64]
- centos6.4安装及升级gcc 4.8.2(已实践)
- CentOS 6.4 x86_64 安装GCC 4.7.3
- gcc-4.4.7升级到gcc-4.8.2
- rhel-server-6.3-x86_64-dvd.iso 安装gcc,g++
- Oracle Database 11.2.0.1 for RHEL5 Server(包括x86和x86_64平台)的静默安装指南
- RHEL 6.4 x86_64 更换自带yum并安装配置163 yum源