背景交待:

1、正在研究ld、栈帧相关的东西;

2、使用高版本编译器得到的添加了诸多内容,不适合研究;

3、gcc的2.95.3版本并不是最低的,但它很经典,也当怀念一下吧;

4、安装低版本gcc实属研究、兴趣所致,与实际开发并无联系。

安装简略步骤:

1、下载gcc;

2、解压;

3、看INSTALL目录下的介绍;

4、配置;

5、编译;

6、安装。

下面着重介绍配置及安装过程。

gcc的下载地址如下:

http://ftp.gnu.org/gnu/gcc

下载文件名称为gcc-2.95.3.tar.gz,下载及解压不用多说。
gcc说最好另建一个新目录来配置、编译,这里按它的意思(注:gcc-built即为这个目录,源代码目录为gcc-2.95.3):

$ mkdir gcc-built
$ cd gcc-built
$ ../gcc-2.95.3/configure --prefix=/usr/local/gcc-95.3 --enable-shared --with-gnu-as --with-gnu-ld --enable-threads=posix --enable-languages=c

这里的配置是参考我以前写的一篇文章:gcc及doxygen的安装过程。不过在configure过程中卡住了:

checking for a BSD compatible install... /usr/bin/install -c
checking for ranlib... (cached) ranlib
checking for texconfig... true

这里卡了好几分钟,等了好久,期间回复了两封e-mail,去csdn灌了两次水,因此具体时间不清楚。configure结束后提示生成Makefile的信息:

checking for a BSD compatible install... (cached) /usr/bin/install -c
creating ./config.status
creating Makefile

编译:

$ make

编译出错:

In file included from /usr/include/sys/types.h:270,
                 from /usr/include/stdlib.h:320,
                 from ../../gcc-2.95.3/gcc/frame.c:42:
/usr/include/bits/pthreadtypes.h:69: warning: unnamed struct/union that defines no instances
../../gcc-2.95.3/gcc/frame.c:55: extra brace group at end of initializer
../../gcc-2.95.3/gcc/frame.c:55: (near initialization for `object_mutex.__data')
../../gcc-2.95.3/gcc/frame.c:55: warning: excess elements in struct initializer
../../gcc-2.95.3/gcc/frame.c:55: warning: (near initialization for `object_mutex.__data')
make[1]: *** [libgcc2.a] 错误 1
make[1]: Leaving directory `/home/latelee/soft/gcc-built/gcc'
make: *** [all-gcc] 错误 2

google得到的结果说要下载几个补丁,于是到http://www.linuxfromscratch.org/patches/downloads/gcc/(这个网站对于做过LFS的同志们来说十分熟悉)下载补丁,与2.95.3有关的共5个,都下载下来。

进入源代码目录:

$ patch -Np1 -i ../gcc-patch/gcc-2.95.3-2.patch(和其它4个)

进入gcc-built重新编译:

$ make

遗憾的是,错误信息依旧。

再次google,找到一篇文章,里面的配置是不需要线程库的,我以研究为目的,也不需要线程库,于是删除编译过程中生成的文件和源代码目录,再次解压、配置:

$ ../gcc-2.95.3/configure --prefix=/usr/local/gcc-2.95.3 --enable-shared --with-gnu-as --with-gnu-ld --disable-threads --enable-languages=c,c++ --program-suffix=-2.95.3

这个过程使用了time命令,结果显示,configure过程约5分钟。
不打补丁再次编译、安装(安装需要使用root权限):

$ make

# make install

$ ls /usr/local/gcc-2.95.3/
bin  i686-pc-linux-gnu  include  info  lib  man

$ ls /usr/local/gcc-2.95.3/bin
c++      cpp  gcc  i686-pc-linux-gnu-gcc  unprotoize
c++filt  g++  gcov        protoize

这里要注意,以前配置时使用了--program-suffix=-2.95.3,本想将生成的编译器添加个后缀,结果无效。其实,这个选项在自带的INSTALL下面的介绍根本就没有,是一厢情意加上去的,当然无效了。

无办法,只好手动修改了,这里将gcc改为gcc-2.95.3
添加环境变量,习惯地,一般修改~?.bashrc文件:

export PATH=/usr/local/gcc-2.95.3/bin:$PATH

注销,重新登陆,查看新安装好的编译器:

$ gcc-2.95.3 -v
Reading specs from /usr/local/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs
gcc version 2.95.3 20010315 (release)

关于低版本与高版本编译器生成的汇编代码的对比及研究,请关注本网站的后续文章。

gcc2.95.3安装过程相关推荐

  1. 转-httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程

    一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util,因此需要事先对其进行升级.升级方式有两种,一种是通过源代码编译安装,一种是直接升级rpm包.这 ...

  2. Android 系统 (79)---Android应用程序安装过程解析

    Android应用程序安装过程解析 Android应用程序安装过程解析 1.程序安装的4大步骤 (1) 拷贝apk文件到指定目录 在Android系统中,apk安装文件是会被保存起来的,默认情况下,用 ...

  3. Hive安装过程中出现 The reference to entity createDatabaseIfNotExist must end with the ';' delimiter.问题

    Hive安装过程中出现 The reference to entity "createDatabaseIfNotExist" must end with the ';' delim ...

  4. redhat as4下的ffmpeg和mencoder安装过程

    redhat as4下的ffmpeg和mencoder安装过程 2008年5月22日的安装过程记录,修正了网上安装过程的bug 主要参考网址: 泛用型 ffmpeg 安裝攻略 米奇 http://bl ...

  5. vue.js安装过程(npm安装)

    一.开发环境 vue推荐开发环境: Node.js: JavaScript运行环境(runtime),不同系统直接运行各种编程语言 npm: Nodejs下的包管理器. webpack: 它主要的用途 ...

  6. as安装过程中gradle_柯赛分享:楼顶大字安装过程中需要用到哪些工具?

    经过前面一系列标识行业常识和制作工艺相关知识的分享,我们知道楼顶大字是标识行业下属的一个重要分支产品类别,也明白了楼顶大字主要制作材料是金属的,尺寸和自重都比较大,运输安装过程相对复杂,安装施工的难度 ...

  7. MySQL的安装过程

     近期对MySQL做了一些研究. 曾经主要接触的是SQL SERVER.所以,今天对该安装过程做了一些总结以及使用过程中的一些心得.并分享给大家. 记得前面.分享过一篇关于数据库的几种连接方式.而 ...

  8. Debian 6.0 安装过程 及中文乱码

    2019独角兽企业重金招聘Python工程师标准>>> Debian 6.0 安装过程 Debian 6.0 安装过程 转(一个别人自录的安装过程录相) http://v.youku ...

  9. Linux CENTOS7 Linux流量监控工具-iftop 安装过程以及示例!

    Iftop安装过程 1,用wget方式下载软件包: wget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz 1,解压文件 ...

最新文章

  1. POJ 3264: Balanced Lineup
  2. Spring Boot中验证码实现kaptcha
  3. pandas DataFrame 索引(二)
  4. 2、编写单元测试用例,对用户注册功能的DAO层进行测试。(注意:测试用例应考虑成功和失败的情况)...
  5. leetcode 643. 子数组最大平均数 I(滑动窗口)
  6. 开发人员工作周报_如何增加找到开发人员工作的机会
  7. 群聊金山云与英特尔的“AI as a Service”,你都get到了什么?
  8. Python数据分析:pandas玩转Excel(一)
  9. 刚看了一个视频,介绍了实体店十几种线上线下引流方法
  10. MFC总结之CListCtrl用法及技巧
  11. java怎么设置颜色_java怎么设置颜色
  12. 主机浏览器访问不了OWASP的主页
  13. Android 颜色代码收集
  14. c语言编辑图形时钟软件,C++实现图形界面时钟表盘代码
  15. 电子招投标技术的五大好处
  16. 怎么把画好的流程图插入到Word中?
  17. 数据结构和算法——kd树
  18. 怎么把.txt转换成html,怎么把txt转换成HTML
  19. Linux下copy命令,并重命名
  20. Node.js:NVM工具的使用 nvm常用命令

热门文章

  1. 智商税?苹果1.8米连接线卖949元、3米的1169元被吐槽:高攀不起
  2. 谷歌为安卓系统加入Fast Pair技术 蓝牙耳机将实现设备自动切换
  3. 快递送不上门,谁的锅?
  4. 索尼PS5国行版本周开售 后期将推全配色DualSense手柄
  5. 2999元起!Redmi K40系列不止骁龙888:还将标配双扬声器
  6. 罗永浩直播间再回应直播售假:全方位整改 成立质控实验室
  7. iPhone 12需求强劲 苹果计划将iPhone产量提升30%
  8. 广东中山一楼盘在平台直播卖房 4小时售出600套
  9. 完美世界:实习生已排除冠状病毒感染性肺炎可能
  10. 一年仅一款!坚果Pro 3终于要来了,会有人支持吗?