LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3298|回复: 17

在Debian3.1下初试体验gcc-4.1-20051112

[复制链接]
发表于 2005-11-28 08:44:13 | 显示全部楼层 |阅读模式
近日在Sir里的Gentoo版及LFS版内,那些热爱编译的大伙们有个热门话题就是gcc-4.1何时会release了。

其实,到今天为止,在官方网页http://gcc.gnu.org/ 上看见gcc-4.1只是开添了release branch,尚未正式推出,没有release date也不能下载到gcc-4.1的release版,能下的就只有snapshot或svn版罢了

那麽何解大伙们这麽关心呢?原因是过去每一个新版gcc都会在runtime性能上(指编译好的程式在运行时)都会为用家们带来惊喜,在Gentoo版曾经有高人说"gcc4.1比4.0性能提高15%绝对不是空话"。试想,gcc-3.4编出来的东西比gcc-3.3快约15%,gcc-4.0编出来的东西比gcc-3.4快约5-10%,若gcc-4.1真的比gcc-4.0能再快15%的话,那麽从gcc-3.3升级到gcc-4.1将会是个大跃进啊!

在好奇心驱使下,下载了gcc-4.1-20051112的snapshot来体验一番。Debian3.1默认的gcc版本是gcc-3.3,正好拿来感受3.3到4.1之间的差距。由於gcc-4.1尚未正式推出,还是自己动手编译吧:

1. 白老鼠是Debian3.1,先将tarball解压到/tmp,这个tarball下回来的时候有34MB,是包括了所有的compiler的

tar jxf gcc-4.1-20051112.tar.bz2 -C /tmp

2. 准备编译,LFS手册说明gcc的developers推荐在独立的目录内进行编译工作,因此叁考LFS或BLFS手册的方法

cd /tmp
mkdir gcc-build
cd gcc-build
../configure --prefix=/opt --libexecdir=/opt/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-language=c,c++

打算把编好的gcc-4.1装到/opt/bin去,这样就不会跟原系统上的gcc有冲突了

3. 开始编译

time make -j4 bootstrap

在此处,time是为了知道整个编译需时多少,make後面的-j4是要指示系统执行4条并行编译,提高效率,bootstrap有特别作用,它指示gcc要对自己进行多次编译及较对。首先系统的gcc-3.3对gcc-4.1编译出stage1的xgcc,然後stage1的xgcc对源码编译出stage2的xgcc,接着stage2的xgcc对源码再编译出stage3的xgcc,若果stage2跟stage3的xgcc对比正确无误,编译便算成功,得出来的gcc-4.1便完全不依赖原系统上的gcc-3.3 compiler

其实上述的部骤对做过LFS的朋友都很熟识了

偶的破电脑是一台PII350+192MB SDRAM。天!这种破难配置花了足591分钟零7秒,近10个小时才完成这一部骤。用du -sh看一下吓了一跳,在一个8GB ext3分区内被吃掉了885MB完间~~

4. 安装gcc-4.1

既然是用Debian系统作白老鼠之用,最好是打包成deb,因此不用make install,改用checkinstall -D来安装(当然系统要装好checkinstall在先),另一番折腾後,一个43MB的gcc-4.1_20051112-1.i386.deb包

终於完成及安装好了,再看一下使用空间,连带刚才的一共用了995MB,近1GB的硬盘空间。当然,这1GB在软件安装好之後是可以删除的。

5. 试验1,用gcc-4.1测试编译wine

公司要用一个很讨厌的软件叫Lotus Notes,天生只有Linux的Dominio Server,无Linux的Client。只能用wine来跑M$的Client,代价就是慢了。要提速,其一方法当然是重新编译wine了。

原系统是用gcc-3.3.5编译的wine-20040505,运作一切良好,只是慢罢了

用新的gcc-4.1尝试编译wine-20040505,把wine-20040505.tar.gz源码解压及转到wine-20040505目录下

CC=/opt/bin/gcc ./configure --prefix=/usr 一切正常

make depend 一切正常

make -j4 五分钟後死掉了,看来是旧版wine的语法未能符合gcc-4.1的要求了

只好下载最新的wine-0.9.2重试,把wine-0.9.2.tar.bz2源码解压及转到wine-0.9.2目录下

CC=/opt/bin/gcc ./configure --prefix=/usr 一切正常

make depend 一切正常

time make -j4 一切正常。

共花了190分钟30秒及916MB硬盘空间终於编译好了

立即用它来跑Notes Client,启动及登陆Notes Server都没问题,COOL!
运作速度是明显地提升了,反应也快速了,再试e-mail的收发好像也没问题,太好了。
继续试workflow,一切正常,好棒!

可是,不能高兴得太早,用e-mail试开或试加attachment时wine跑的Notes Client就会马上死掉,这种情况其实我过去用gcc-3.4或gcc-4.0编译wine的时候曾经面对过的,看来ABI不兼容问题还是存在。

唉!死症~~

6. 试验2,用gcc-4.1测试编译内核

在Linux系统,有4个(类)主要的软件对系统的性能起了关键性的影响,它们是:(a)内核,(b)glibc,(c)X-window自身,即XFree86或者X.org及(d)X的桌面环境,如Gnome、KDE等。即是说,要提升系统的性能是可以从这些软件着手的,可是:

-- 从源码升级glibc是有很高难度而且很危险的,弄不好随时可以令系统挂掉,虽然也有方法去修理,见 用Knoppix修理Debian系统 考虑了gcc-4.1-20051112本身已很多bug,不试也罢了!
-- XFree86/X.org/Gnome/KDE等都是庞然大物,记得LFS版终极幻想斑竹在他的3400+ 64位CPU+4GB内存+1TB RAID硬盘的强劲电脑下编译KDE约要4~5小时,唉~~看我的破电脑上还是不好试,算了

剩下来而且有把握成功的自然是测试编译kernel了

我的系统正在用2.6.13内核,没有装yaird,那麽就编译2.6.13.4内核吧

把linux-2.6.13.4.tar.bz2源码解压及转到linux-2.6.13.4目录下,执行:

make mrproper 这是良好习惯,下回来的source tree同样要清除一下
make menuconfig 把旧的config读进来再save as .config就是了

编译前先修改一下Makefile

在第一个MAKEFLAGS那一行加入 -j4 指示系统编译时用4条并行编译,提高效率

MAKEFLAGS += -j4 --...

另外修改HOSTCC及HOSTCXX让它们指向新编好的gcc-4.1来用

HOSTCC=/opt/bin/gcc
HOSTCXX=/opt/bin/g++ (内核是用c写的,其实这个不是绝对需要)

存档後便可以开始了,执行:

time make-kpkg --append-to-version -custom kernel-image

好不容易又过了156分钟27秒及花了447MB硬盘空间,一个十几MB的kernel-image-2.6.13.4-xxxxx-custom.i386.deb终於完成了。Runtime performance的提升,代价是沉长的编译时间(Compile time),用gcc-4.1编译内核所花的时间明显比gcc-3.3长N久了,记得用gcc-3.3编2.6.13内核时只花了2个小时左右,现在却要2个半小时

不管了,马上用dpkg -i安装及重启之。启动时没有发现异常,可顺利进入bash shell,再入X用wine来运行Lotus Notes Client。呵呵,重未如此快速过,反应奇快,感觉超爽,好不快哉!简直是变相升级了硬件似的,真希望把XFree86也来编译一次。。。


结语:

1. gcc-4.1虽然未正式release,尚在开发阶段,而且仍有N多的bugs未改正,但gcc-4.1是绝对值得大家期待的

2. gcc-4.1跟gcc-3.4及gcc-4.0同属第2版的ABI,跟部份采用gcc-3.3(用第1版的ABI)编译出来等运行环境仍有不兼容之处,也就是说gcc-4.1推出之日,它可以完全取缔gcc-3.4及gcc-4.0,而gcc-3.3暂时仍有存在价值

3. Debian的developers为求稳定及高兼容性,所以非常保守,软件包大多是为i386而做,结果是系统严重被underpowered,想将系统的潜能发挥出来,自行编译软件是免不了的。因此撰写本文的时候尽量写得详细,希望对新手们或有意自行编译软件的兄弟们有叁考价值

待将来gcc-4.1正式推出後,有机会一定再作更详细的试验。。。
发表于 2005-11-28 09:25:08 | 显示全部楼层
太真棒~!
回复 支持 反对

使用道具 举报

发表于 2005-11-28 09:33:43 | 显示全部楼层
期待中....
回复 支持 反对

使用道具 举报

发表于 2005-11-28 10:33:40 | 显示全部楼层
好文好文
得出一个结论...doom老大用五笔输入法
回复 支持 反对

使用道具 举报

发表于 2005-11-28 10:58:27 | 显示全部楼层
好,我也要试试
回复 支持 反对

使用道具 举报

发表于 2005-11-28 13:57:08 | 显示全部楼层
分别用gcc3.4和gcc4.1编译内核及其他一些软件
我怎么就一点都感觉不到性能的提升呢
回复 支持 反对

使用道具 举报

发表于 2005-11-28 16:40:53 | 显示全部楼层
哈哈
五笔!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-28 16:50:39 | 显示全部楼层
Post by PiPiDou
好文好文
得出一个结论...doom老大用五笔输入法
PiPiDou兄来Sir不久,有所不知了。我是不会中文输入法的,现在能用中文发帖也是很近期的事,http://www.linuxsir.cn/bbs/showthread.php?t=225129
Post by woxiren
分别用gcc3.4和gcc4.1编译内核及其他一些软件
我怎么就一点都感觉不到性能的提升呢
可能woxiren兄的电脑已很快,对些微的性能增长是难以察觉到的了 ;)
回复 支持 反对

使用道具 举报

发表于 2005-11-28 17:07:41 | 显示全部楼层
哈哈,太期待了,快快出来吧,谢谢doom兄分享经验!
回复 支持 反对

使用道具 举报

发表于 2005-11-28 17:17:31 | 显示全部楼层
Post by woxiren
分别用gcc3.4和gcc4.1编译内核及其他一些软件
我怎么就一点都感觉不到性能的提升呢

d00m3d用的是3.3,gcc3.3和gcc.3.4性能上已有一定的差距了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表