|

楼主 |
发表于 2005-6-4 10:42:22
|
显示全部楼层
人在gentoo漂,哪有不挨刀?经过了几番思想、技术上的斗争,终于确定了一个合理使用/etc/make.conf和/etc/portage来控制编译的方向。
我的/etc/make.conf原本如下:
- # These settings were set by the catalyst build script that automatically built this stage
- # Please consult /etc/make.conf.example for a more detailed example
- CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer"
- CHOST="i686-pc-linux-gnu"
- CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden"
- LDFLAGS="-Wl,-O1"
- ACCEPT_KEYWORDS="~x86"
- SYNC="rsync://rsync2.au.gentoo.org/gentoo-portage"
- GENTOO_MIRRORS="http://mirror.gentoo.gr.jp http://gentoo.gg3.net http://gentoo.mirrors.pair.com/"
- #FETCHCOMMAND='/usr/bin/proz --no-getch -s ${URI} -P ${DISTDIR}'
- PORTDIR_OVERLAY="/usr/portage /dump/got "
- USE="java nptl -ia64 -ppc -mips cairo readline -fortran -doc multitarget multislot -ipv6 splash pcmcia via unicode utf-8 opengl python2.4 xml2 sed gstreamer mad stoke zh_CN nptlonly hal dbus cjk -qt -kde splash gtk2 acc alsa fbcon directfb dvd apm bitmap-fonts cups gtk2 avi readline 3dnow 3dnowext mmxext mp mmx sse mtrr"
- AUTOCLEAN="yes"
- FEATURES="buildpkg autoaddcvs autoconfig ccache cvs strict sfperms"
- #PORTAGE_BINHOST=""
- LANGUAGE="zh_CN.UTF-8:zh_CN:zh_CN.GBK:en_US:en_US.UTF-8"
- LANG="zh_CN.UTF-8"
- VIDEO_CARDS="via"
- CLEAN_DELAY=3
- EMERGE_WARNING_DELAY=5
复制代码
有这么几点是需要注意的:
首先是CFLAGS="-O2 -march=athlon-xp -fomit-frame-pointer",注意这其中的“-march=myarch”,在gcc3.x时,这里默认是“-mcpu=myarch”。当你要把系统升级到gcc4时,这里“mcpu”必须改成“march”。实际上,在gcc3.4.x系列中,“march”也可以顺利编译,所以从现在起,你就可以把它修正过来了。
其次,CFLAGS中编译级别“-O2”,注意前面是大写字母O,不是数字0。这个级别2代表了编译的深度,理论上讲,这个级别数字越大,编译出来的性能也越好,但是编译所需要的时间也越长。我就曾听说有些国外gentoo高手的级别有设置成9的,顶礼摹拜一下。但是在gcc4的编译中,目前这个级别只有在2时可以顺利编译大多数的程序。所以你也不要和我一样去疯狂追求高性能。等gcc4.1稳定以后,相信有更多的机会让我们进一步提高性能。
再者,注意LDFLAGS=“-Wl,-O1”,这个参数告诉连接器,把Binutils软件包中所有的程序都使用“-W1,-O1”连接。然而,严格地说,首先是“-W1,-O1” 被传递给libtool,libtool再把“-W1,-O1”传递给连接器。这样做可以使编译出来的程序运行效率更高。这种做法在gcc4.0.0的beta ebuilds编译时可以很好的使用,但是从最新的4.0.1beta和4.1.0beta的ebuild开始。如果你从一开始就打开了这个设置,那么在编译时就会报错中断。所以在第一次编译gcc4.0.1后续版本时,请先把这个设置关闭,等gcc4编译完成后,再打开这个设置。 |
|