|

楼主 |
发表于 2005-6-4 11:32:51
|
显示全部楼层
make.conf的问题还是多多,注意CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden",这是针对C++的编译参数。在编译gcc4.0.0的beta时,这样设置可以说是非常顺利,但是从gcc4.0.1开始,这样设置就又是暂时不做推荐!只需要CXXFLAGS="${CFLAGS}",如此即可,越是想调细节,就越是要对GCC有深入了解,可惜我想说:我不懂编程。
接着就是对于USE这个gentoo最经典控制的痛苦经验。关于/etc/make.conf中的USE意义和用法,在/etc/make.conf.example文件中已经有详细的描述。但是我在实际的操作中,也发现了一个所谓“技巧”。当我开始考虑怎么设置一些有用的USE时,我想到的第一点就是自己的cpu参数。所以我使用
来得到flags,然后把cpuinfo的flags写到USE中去。这个技巧在当你建设一个完整的比如GNOME桌面环境时也许是正确的,但是对于一个即将编译的stage2,stage3来说,这个技巧就是有点过而不及的嫌疑。为什么?因为cpuinfo出来的flags确实是你当前cpu确定的信息,对于整个系统的编译也非常有用,但是这些参数太多了。如果没有设置USE,那么从stage2开始emerge system时,只需要编译63个组件,而一旦将cpu的flags加到USE中,emerge system时必然会将X也包含进去,如果你不幸得又自己加了“gtk gnome qt kde fb splash unicode java”等等参数,那么也许你要等好上大半天才能把system编译完,而这个system其实并不是真正的system核心了。
于是痛定思痛,设置一个最小的USE范围。现在我的USE是这样设置的:
- USE="nptl nptlonly multitarget multislot fortran -ipv6 -doc"
复制代码
注意“nptl nptlonly”这两个设置是启用glibc的nptl线程库的。NPTL(Native Posix Thread Library)使用2.6内核的新特性重写了 Linux 的线程库,取代历史悠久而备受争议的LinuxThreads成为glibc 的首选线程库。在线程创建/销毁开销方面,NPTL的改进相当明显(降低约600%)。NPTL能极大提高SMP环境下服务器系统的整体性能(超过65%),相对而言,对单处理机系统影响较小(10%左右);2.6内核的抢占特性对系统性能影响很小(不超过±1%),某些情况下甚至有所下降;超线程技术在LinuxThreads中的影响是负面的,在NPTL中是正面的,但影响幅度都很小(5%-6%)。具体测试可以看一下IBM开发人员社区的文章: http://www-128.ibm.com/developer ... cn-newsletter-linux
nptlonly的使用可以防止glibc重复编译多次,以节省时间。 |
|