gcc 2.95.3 & p2psim 的安装

前天帮同学配置 gcc-2.95.3 的环境,发生了若干问题,有必要记录一下。顺便把 patch 的用法学习一下。
最开始是在 ubuntu 10.04 下做的,出现的问题应该是属于 bug,遂转至 centos 5.2。

安装之前先把  development tools 安装一下,里面是一些用来做开发的工具,诸如 gcc 之类的工具。

# yum groupinstall “Development Tools”

下载 gcc-2.95.3,存在目录/root/gcc;
下载补丁gcc-2.95.3-2.patchgcc-2.95.3-no-fixinc.patch gcc-2.95.3-returntype-fix.patch,放在 /root/gcc/gcc-patch。

# cd /root/gcc
# tar -zxvf gcc-2.95.3.tar.gz
# cd gcc-2.95.3

# patch -p1 < ../gcc-patch/gcc-2.95.3-2.patch
# patch -p1 < ../gcc-patch/gcc-2.95.3-no-fixinc.patch
# patch -p1 < ../gcc-patch/gcc-2.95.3-returntype-fix.patch
patch 的具体用法请看附录。

# mkdir /opt/gcc-2.95.3

到下面这个链接把文件下载下来。

http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub

将 /root/gcc/gcc-2.95.3/ 下面的 config.guess 和 config.sub 覆盖掉,注意把文件的属性修改一下。

到下面这个链接把两个文件

# /root/gcc/gcc-2.95.3/configure –prefix=/opt/gcc-2.95.3  –without-newlib  –enable-languages=c,c++  –disable-threads
# make bootstrap
# make install

验证一下没有问题

# /opt/gcc-2.95.3/bin/gcc -v
Reading specs from /opt/gcc-2.95.3/lib/gcc-lib/i686-pc-linux-gnu/2.95.3/specs
gcc version 2.95.3 20010315 (release)

安装成功,接下来安装 p2psim

先把 /opt/gcc-2.95.3/bin 下面的 gcc 和 g++ 做个软链接。

# cd /usr/bin
# mv gcc gcc.bk
# mv g++ g++.bk
# ln -s /opt/gcc-2.95.3/bin/gcc gcc
# ln -s /opt/gcc-2.95.3/bin/g++ g++

将 p2psim 下载至 /root,解压缩

# tar -zxvf p2psim-0.3-tar.gz
# cd /root/p2psim-0.3
# ./configure
# make
# make install

测试

# p2psim/p2psim example/protocol.txt example/topology.txt example/events.txt

附录:

patch 命令

一般和 patch 同时出现的还有 diff 这个工具,在此一并记录。
diff/patch 这对工具在数学上来说,diff 是对2个集合求差,patch 是求和。diff 后面可以接两个文件名或两个目录名。 如果是一个目录名加一个文件名,那么只作用在那么个目录下的同名文件。如果是两个目录的话,作用于该目录下的所有文件,不递归。如果我们希望递归执行,需 要使用 -r 参数。

$ diff A B > C
生成 A 和 B 的 diff 文件 C

$ patch A C
给 A 打上 diff 文件得到 B

$ patch -R B C
B 还原为 A

假设 program-1.0 目录中为老版,现开发完成的新版位于 program-2.0 目录中,将两个目录置于同一父目录下,然后在该父目录上执行:

$ diff -Nur program-1.0 program-2.0 >program-2.0.patch

将生成一个 program-2.0.patch 的补丁文件,发布该补丁文件(当然可以先压缩成 bzip2 格式)。
假设拿到的是 program-2.0.patch.bz2 文件,则在 program-1.0 目录同级执行:

$ bzcat program-2.0.patch.bz2 | patch -p0

如此即完成了从 1.0 到 2.0 的升级。

参考:
http://www.linuxfromscratch.org/blfs/view/5.1/general/gcc2.html
http://elaine172xiaoxiao.spaces.live.com/blog/cns!94020BE8ACC017C9!178.entry
http://www.cnblogs.com/napoleon_liu/archive/2011/01/31/1948217.html
 

  • http://www.freetstar.com freetstar

    学习了。一直没掌握patch