首先,现在最新的包GCC 4.2.bz2,一般的到处都有的下(),下的速度很满,20多k,很恶心,我喜欢迅雷的速度,在windows下,大概42M,下载速度2到4M,回到下,挂载,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++都已经建立好了,可以用了,最后把原来的包和解压文件都可以删除了,以节省硬盘空间!
文章来自:
本来想彻底的来一次lfs的,可惜实在是没有时间,所以就对gcc来了次小升级,gcc的编译安装是个非常头疼的事情,失败了好几次终于安装成功。下述安装过程在CentOS5上测试成功。。。
-
$ tar xvf gcc-4.2.3.tar.gz
-
$ mkdir gcc-build
-
$ cd gcc-build
-
$../gcc-4.2.3/configure --prefix=/usr/local/gcc-4.2.3 \
-
--enable-threads=posix --disable-checking \
-
--enable--long-long \
-
--host=i386-redhat-linux \
-
--with-system-zlib \
-
--enable-languages=c,c++,java
-
-
$ make bootstrap //重复编译自身
-
$ make -k check 2>&1 | tee gcc-check-log//-k跳过错误重定向到gcc-check-log
-
$ grep Error gcc-check-log //查看错误信息
-
# make install
若想重新编译 make clean 清除上次编译遗留下的文件
uninstallation 因为我的旧版是RPM包的,查看版本号 gcc --version 然后 rpm -e 删除了
若旧版是用源码安装的,whereis gcc 或者 which gcc 来查看所在路径,删除即可
工具链设置:
命令文件符号连接到 /usr/bin 目录下:
-
$ cd /usr/bin
-
$ ln -sv /usr/local/gcc-4.2.3/bin/gcc gcc
-
$ ln -sv /usr/local/gcc-4.2.3/bin/g++ g++
-
$ ln -sv /usr/local/gcc-4.2.3/bin/gcj gcj
库文件设置:
将/usr/local/gcc-4.2.3/lib 路径添加到环境变量LD_LIBRARY_PATH中
添加下列代码
setenv LD_LIBRARY_PATH /usr/local/gcc-4.2.3/lib:$LD_LIBRARY_PATH
清理现场
-
$ rm -rf gcc-4.2.3
-
$ rm -rf gcc-build