首先,现在最新的包GCC 4.2.bz2,一般的到处都有的下([url]ftp://ftp.gnu.org/gnu/gcc[/url]),linux下的下载速度很满,20多k,很恶心,我喜欢迅雷的下载速度,在windows下下载,大概42M,下载速度2到4M,回到linux下,挂载,ntfs格式的我的,具体不说了,说安装!
 
  进入到挂载的目录下,先cp GCC4.2.bz2 /azuo,
 
  cd /azuo,
 
  tar -xvf GCC 4.2.bz2 ,
 
  得到gcc-4.2,
 
  cd gcc-4.2,在/usr目录下建立一个文件夹就是现在要存放新的gcc的目录,
 
  mkdir /usr/gcc4
 
  。/configure –prefix=/usr/gcc4
 
  回车,就会有配置信息,只要不报错就可以了,
 
  make,这个过程很久,因为我没有设置一些具体的选项,因此,所有的组件几乎都要编译一遍,我的电脑cpu:AMD 3200+X2 ,1.5g内存,大概花费一个半小时。
 
  到这个时候为止,/usr/gcc4下还没有任何东西,编译过程都是发生在源文件夹,让我们再来一个动作,所有的要用到的东西都会配置到目标文件夹下,
 
  make install;
 
  这个过程也不短,等着就是了。
 
  一切都已经弄好了之后就是使用最新的gcc了,可以看到,在/usr/gcc4/bin下有gcc,g++,等一些东西,都是可以用的,写两个程序:
 
  aa.c:
 
  1 #include
 
  2
 
  3 int main(void) {
 
  4 printf("ad");
 
  5 return 1;
 
  6 }
 
  gcc -o aa aa.c
 
  执行 ./aa
 
  上面的这个是c的,下面这个就是c++的了:
 
  a.cpp:
 
  1 #include
 
  2 using namespace std;
 
  3 int main(void) {
 
  4 cout << "Ok!" << endl;
 
  5 return 1;
 
  6 }
 
  g++ -o a a.cpp
 
  执行就是了。/a
 
  一切ok了,就可以让最新的gcc工具取代原来的工具了。
 
  看看原来的gcc是什么版本的,我们好卸载它:
 
  [root@BTazuo bin]# rpm -qa gcc
 
  gcc-4.1.2-27.fc7
 
  [root@BTazuo bin]# rpm -e gcc-4.1.2-27.fc7
 
  error: Failed dependencies:
 
  gcc is needed by (installed) systemtap-0.5.13-1.fc7.i386
 
  gcc = 4.1.2-27.fc7 is needed by (installed) gcc-c++-4.1.2-27.fc7.i386
 
  gcc = 4.1.2-27.fc7 is needed by (installed) gcc-gfortran- 4.1.2 -27.fc7. i386
 
  [root@BTazuo bin]# rpm -e gcc-c++-4.1.2-27.fc7.i386
 
  [root@BTazuo bin]# rpm -e gcc-gfortran-4.1.2-27.fc7.i386
 
  [root@BTazuo bin]# rpm -e gcc-4.1.2-27.fc7
 
  error: Failed dependencies:
 
  gcc is needed by (installed) systemtap-0.5.13-1.fc7.i386
 
  [root@BTazuo bin]# g++
 
  bash: g++: command not found
 
  卸载成功
 
  [root@BTazuo bin]# gcc
 
  gcc: 没有输入文件 ,可见gcc犹在
 
  [root@BTazuo bin]# rpm -e systemtap-0.5.13-1.fc7.i386
 
  [root@BTazuo bin]# gcc
 
  gcc: 没有输入文件
 
  [root@BTazuo bin]# rpm -e gcc-4.1.2-27.fc7
 
  [root@BTazuo bin]# gcc
 
  bash: /usr/lib/ccache/gcc: 没有那个文件或目录
 
  最后的卸载成功!
 
  这个时候,要注意了,我的gcc在/usr/bin下面有,在/usr/lib/ccache这个目录下也有,分别在这两个下面都要建立一个链接:
 
  [root@BTazuo bin]# ln -s /usr/gcc4/bin/g++ g++
 
  [root@BTazuo bin]# g++
 
  g++: 没有输入文件
 
  可见g++已经装好了,可以使用了。
 
  然后是gcc:
 
  [root@BTazuo bin]# ln -s /usr/gcc4/bin/gcc gcc
 
  [root@BTazuo bin]# gcc
 
  bash: /usr/lib/ccache/gcc: 没有那个文件或目录
 
  [root@BTazuo bin]# ./gcc
 
  gcc: 没有输入文件
 
  可见还要给另外一个目录建立一个gcc的链接:
 
  [root@BTazuo lib]# ln -s /usr/gcc4/bin/gcc /usr/lib/ccache/gcc
 
  [root@BTazuo lib]# gcc
 
  gcc: 没有输入文件
 
  到此为止,gcc和g++都已经建立好了,可以用了,最后把原来的包和解压文件都可以删除了,以节省硬盘空间!

文章来自:[url]http://linux.chinaitlab.com/set/738529.html[/url]





gcc-4.2.3 installation


本来想彻底的来一次lfs的,可惜实在是没有时间,所以就对gcc来了次小升级,gcc的编译安装是个非常头疼的事情,失败了好几次终于安装成功。下述安装过程在CentOS5上测试成功。。。  
  1. $ tar xvf gcc-4.2.3.tar.gz
  2. $ mkdir gcc-build
  3. $ cd gcc-build
  4. $../gcc-4.2.3/configure --prefix=/usr/local/gcc-4.2.3   \
  5.                         --enable-threads=posix --disable-checking   \
  6.                         --enable--long-long   \
  7.                         --host=i386-redhat-linux   \
  8.                         --with-system-zlib    \
  9.                         --enable-languages=c,c++,java
  10.  
  11. $ make bootstrap                        //重复编译自身
  12. $ make -k check 2>&1 | tee gcc-check-log//-k跳过错误重定向到gcc-check-log
  13. $ grep Error gcc-check-log              //查看错误信息
  14. # make install
若想重新编译 make clean 清除上次编译遗留下的文件

uninstallation

因为我的旧版是RPM包的,查看版本号 gcc --version 然后 rpm -e 删除了
若旧版是用源码安装的,whereis gcc 或者 which gcc 来查看所在路径,删除即可
工具链设置:

命令文件符号连接到 /usr/bin 目录下:
  1. cd /usr/bin
  2. ln -sv /usr/local/gcc-4.2.3/bin/gcc gcc
  3. ln -sv /usr/local/gcc-4.2.3/bin/g++ g++
  4. ln -sv /usr/local/gcc-4.2.3/bin/gcj gcj
库文件设置:

将/usr/local/gcc-4.2.3/lib 路径添加到环境变量LD_LIBRARY_PATH中
  1. #vi /etc/profile
添加下列代码

setenv LD_LIBRARY_PATH /usr/local/gcc-4.2.3/lib:$LD_LIBRARY_PATH

清理现场
  1. $ rm -rf gcc-4.2.3
  2. $ rm -rf gcc-build