A:
参考:
http://www.eetop.cn/blog/html/98/510998-20963.html
详细:
GCC-4.4.3 安装说明
注意:以下的操作都是root权限
由于gcc-4.4.3.tar.bz2和linux-2.6.32.tar.bz2这两个包很大,所以需要自己下载,而gmp-4.2.4.tar.bz2和mpfr-2.3.2.tar.bz2不好找在这里我已经下载了在附件里可以直接用。
1. 下载所需的安装包:
1) gcc-4.4.3.tar.bz2
2)gcc依赖的两个包:gmp-4.2.4.tar.bz2和mpfr-2.3.2.tar.bz2
3)内核linux-2.6.32.tar.bz2,
2 解压缩与安装
1)新建目录
# cd /home
#mkdir mygcc
2) 用工具把所下载到的gcc-4.4.3.tar.bz2,gmp-4.2.4.tar.bz2和mpfr-2.3.2.tar.bz2压缩包拷贝到mygcc目录下
3) 进入mygcc目录进行解压
#cd mygcc
#tar –xvf tar xvf gcc-4.4.3.tar.bz2
#tar xvf mpfr-2.3.2.tar.bz2
解压后在当前目录下出现了mpfr-2.3.2目录,并且把该目录更名成mpfr,
#mv mpfr-2.3.2 mpfr
#tar xvf gmp-4.2.4.tar.bz2
解压后在当前目录下出现了gmp-4.2.4目录,并且把该目录更名成gmp,
#mv gmp-4.2.4 gmp
4) 把上面改名后的两个目录移动到gcc-4.4.3目录下:
#mv mpfr gmp gcc-4.4.3
5) 建立目标目录,用来存放安装信息
#cd /usr/local
#mkdir gcc-4.4.3
6) 配置
注意:这一步必须是在目标目录下执行的,例如我的目标目录在/usr/local/gcc-4.4.3目录。
# /home/mygcc/gcc-4.4.3/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++,java
7) 编译(make 和下一步make install的操作任然是在目标目录下操作的即我这里是/usr/local/gcc-4.4.3目录下)
#make
注意:这一步需要编译很长时间,大约50分钟,需耐心等待,若你是按照我的步骤操作的一般不会出现问题的。在make完周后执行make install命令。
6)安装
#make install
操作完这一步,此时gcc和依赖的包就全部装完了。此时我的gcc-4.4.3安装在了/usr/local/gcc-4.4.3/bin/gcc,可以不用设置环境变量,只是每次使用时指明gcc4的路径就可以了,例如,我要编译hello.c文件,那么命令为:/usr/local/gcc-4.4.3/bin/gcc hello.c –o hello。
B:
自己动手做:
------------------------------------------------light的测试结果------------------------------------------------------------
参照以上的步骤,编译成功,结果在/usr/local/gcc-3.4.0/bin目录下,可以使用./gcc -v查看版本
以下是light的历史记录:
root@light-Aspire-4741:/usr/local/gcc-4.4.3# history
16 /home/light/Downloads/gcc-4.4.3/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++,java
17 make
18 export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/ //fix:bug 1
19 make
20 make install
--------------------21-23不需要-----------------------------------
21 sudo apt-get install libgmp3-dev libmpfr-dev libmpc-dev libc6-dev-i386 libcloog-ppl-dev
22 make
23 make install
root@light-Aspire-4741:/usr/local/gcc-4.4.3#
--------------------------------
注:bug2见上一篇文章的最后的代码修改部分!修改后则可以编译通过!
即:
2.
You will get an error “./.libs/libgcj.so: undefined reference to `__cxa_call_unexpected”.
To resolve, we need to modify the prims.cc file like below:
--- libjava/prims.cc 2014-01-11
+++ libjava/prims.cc 2014-01-11
@@ -38,6 +38,14 @@ details. */
.........
#endif
#ifndef DISABLE_GETENV_PROPERTIES
+#ifdef __GLIBC__
+#define __NO_CTYPE 1
+#endif
#include <ctype.h>
#include <java-props.h>
#define PROCESS_GCJ_PROPERTIES process_gcj_properties()
.........
---------------------------------------------------更改系统GCC版本为上面刚刚编译过的版本,方法如下:--------------------------------------------------------------
light@light-Aspire-4741:/usr/bin$ sudo mv gcc gcc.bak
[sudo] password for light:
light@light-Aspire-4741:/usr/bin$ sudo ln -s /usr/local/gcc-3.4.0/bin/gcc gcc
light@light-Aspire-4741:/usr/bin$ ls gcc -l
lrwxrwxrwx 1 root root 28 Jan 12 00:18 gcc -> /usr/local/gcc-3.4.0/bin/gcc
light@light-Aspire-4741:/usr/bin$ gcc -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: /home/light/Downloads/gcc-4.4.3/configure --prefix=/usr/local/gcc-3.4.0 --enable-threads=posix --disable-checking --enable--long-long --enable-languages=c,c++,java
Thread model: posix
gcc version 4.4.3 (GCC)
light@light-Aspire-4741:/usr/bin$