在ubuntu11.1上编译gcc3.3.6
在ubuntu11.1上编译gcc3.3.6
1.概述
由于使用ubuntu11.1自带的gcc4.6编译crosstool-0.43时显示gcc版本太旧(其实是太新),决定更换gcc版本。
首先更换到了gcc4.2.2,但编译crosstool-0.43时仍然显示gcc版本太旧,决定更换gcc3.3.6 。
本文档记录在ubuntu11.1上安装gcc4.2.2以及使用4.2.2编译gcc3.3.6的过程。
2.在ubuntu上安装gcc4.2.2
由于gcc4.2已经不再保存在ubuntu的软件源中,所以需要先添加一个包含gcc4.2的软件源。
sudo gedit /etc/apt/sources.list
在最后一行添加
##Added for GCC deb http://mirror.pnl.gov/ubuntu/ hardy-updates main universe
直接通过命令下载安装gcc4.2
sudo apt-get install gcc-4.2
安装完成后编译hello_world.c测试,产生了一堆错误。
根据错误提示,一一链接,修改(一个挺漫长的过程,忘做笔记了……)。hello world编译成功。
3.是gcc4.2.2编译gcc3.3.6
在网上看到gcc作者说不再更新维护以前版本的gcc,所以不准备回答我们在编译gcc3.3.6中的各种问题。(http://gcc.gnu.org/ml/gcc/2004-11/msg00410.html)
所以改用bootstrap
参考了这个帖子http://www.cnblogs.com/qi09/archive/2010/12/06/1897821.html
把关键内容粘贴过来:
Step 1:
下载gcc 3.3.6,解压缩至你的工作目录。如:此处我的工作目录为/home/qiqi/software。此时software下新增加一个子目录gcc-3.3.6。另外,这里要注意把.patch文件保存在当前目录下,如:我在software目录下工作,那么把patch文件保存在software目录下。进入gcc-3.3.6目录,执行如下命令。
2 patch -Np1 -i ../gcc-3.3.6-linkonce-1.patch &&
3 mkdir ../gcc-build &&
4 cd ../gcc-build &&
5 ../gcc-3.3.6/configure --prefix=/opt/gcc-3.3.6 \
6 --enable-shared --enable-languages=c,c++--enable-threads=posix &&
7 make bootstrap
8
Step 2:
检查是否安装成功,如果需要的话。我在这里检查了一下,但是没有看懂输出的东东,所以没起什么作用。贴出来代码参考一下
2 ../gcc-3.3.6/contrib/test_summary >test_summary.log 2>&1&&
3 ../gcc-3.3.6/contrib/test_summary | \
4 grep -A7 Summ >test_summary_short.log 2>&1
Step 3:
下面以root身份执行
2 mv -v /opt/gcc-3.3.6/lib/libstdc++.so.5*/usr/lib &&
3 ln -v -sf /usr/lib/libstdc++.so.5.0.7/opt/gcc-3.3.6/lib &&
4 ln -v -sf libstdc++.so.5.0.7/opt/gcc-3.3.6/lib/libstdc++.so.5&&
5 chown -v -R root:root \
6 /opt/gcc-3.3.6/lib/gcc-lib/i686-pc-linux-gnu/3.3.6/include
至此,我们以成功安装了gcc 3.3.6。但如果查看gcc版本,可能还是gcc 4.4.4等高级版本。
这是,我就卸载了高版本的gcc(有点破釜沉舟哦~~555).
rpm -e gcc --nodeps
再查看gcc版本,发现/usr/...(忘记了)/ccache/gcc 无此目录或文件!此时需要修改PATH。
在~/.bashrc文件中添加
export PATH=$PATH:/opt/gcc-3.3.6/bin
保存,现在gcc -v,提示如下信息:
gcc version 3.3.6 ,至此,gcc 3.3.6安装成功!OH YEAH!
我并没有修改PATH,而是把gcc-3.3.6通过ln链接到了/usr/bin/
编译hello word测试:成功。