Gentoo 编译相关

(0 comments)

ccahce

为了提高gcc的编译速度,建议安装ccache来缓存提高性能。

安装ccache:

emerge -av ccache

查看并配置当前CHOST:

emerge --info | grep CHOST
ccache-config --install-links YOUR-CHOST-HERE;

为了编译时默认启用ccache功能,在make.conf文件中添加:

FEATURES="parallel-fetch ccache"

系统默认缓存目录在/var/tmp/ccache,编译时也将缓存文件放在该目录。而用户的缓存目录在/root/.ccache,虽然root用户从来不会使用这个目录,这会导致混乱。查看缓存命中率等统计信息时,必须加上CCACHE_DIR参数。

CCACHE_DIR="/var/tmp/ccache" ccache -s

为了避免混乱,最好:

echo "CCACHE_DIR=\"/var/tmp/ccache\"" >> /etc/env.d/99local 
env-update && source /etc/profile

distcc

distcc可以让网络中的多台机器一起编译,这样可以大大提高编译速度。

除非你想用图形工具来监控任务,否则不要在USE中包含'gnome'或者'gtk'。不安装图形工具,只安装软件包。

USE='-*' emerge distcc
echo sys-devel/distcc -* >> /etc/portage/package.use

编辑/etc/conf.d/distccd文件,允许局域网内计算机连接:

DISTCCD_OPTS="${DISTCCD_OPTS} --allow 10.0.0.0/8"

启动服务端,并设置为开机时默认启动:

/etc/init.d/distccd start
rc-update add distccd default

初始化环境变量(–install),并设置编译时同时连接到那些主机一起编译,通常列表中不需要包括本机(localhost):

distcc-config --install
distcc-config --set-hosts "u01 10.62.0.200"

distccmon-text工具可以查看是否正常工作,没隔5秒刷新一下列表:

DISTCC_DIR=/var/tmp/portage/.distcc distccmon-text 5

最好将DISTCC_DIR路径写入系统环境变量:

echo "DISTCC_DIR=\"/var/tmp/portage/.distcc\"" >> /etc/env.d/99local 
env-update && source /etc/profile

配置Portage使用distcc

修改make.conf编译参数,加入distcc支持,distcc应该写在ccache后面。还要编辑MAKEOPTS来包含-jN(设置为网络中处理器的总数加1)。

FEATURES="parallel-fetch ccache distcc"
MAKEOPTS="-j5"

配置Automake使用distcc

这比设置Portage更简单,你所要做的就是更新你的PATH环境变量,在gcc(/usr/bin之前包含/usr/lib/distcc/bin。然而,有一点警告。如果你使用ccache,你要把distcc放在ccache部分之后。像这样:

export PATH=”/usr/lib/ccache/bin:/usr/lib/distcc/bin:${PATH}”

每次执行emerge system更新整个系统后,一定要重新执行emerge distcc。

编译问题

emerge gcc-3.3.6-r1出错。。。

如果不是一定要用gcc3来编译东西,而只是用c++库的话,可以装

emerge sys-libs/libstdc++-v3
Currently unrated

Comments

There are currently no comments

New Comment

required

required (not published)

optional

required