gentoo默认使用clang编译包

发布: 2013-07-27 19:28

clang-3.0以后,逐渐成熟稳定,由于它的编译速度,几次想使用其编译整个系统。

目前,终于在clang-3.3,把系统的默认编译器设置为了clang。
由于gentoo的高度灵活性和可定制性,这个切换过程不太复杂。

gentoo的多编译器设置机制:
在编译时gentoo其实使用是CC和CXX变量,所以只要能设置相应的变量,
gentoo的编译系统会使用这些变量执行编译。
另外,gentoo还给出了配置目录,/etc/portage/,用于定制化gentoo的编译过程。
其中目录/etc/portage/env/中的文件,可被用于配置编译器切换,如
该目录中有gcc,clang文件,分别对应使用gcc和clang编译时的环境变量设置。


配置如下:
make.conf文件:
添加 source /etc/portage/env/clang

/etc/portage/env/clang:
[gzleo@myarchbox etc]$ more portage/env/clang
CC=clang
CXX=clang++
CFLAGS="-O2 -pipe " # for clang++ c++11, but can not use
CXXFLAGS="${CFLAGS} "

/etc/portage/env/gcc文件:
CC=gcc
CXX=g++
CFLAGS="-O2 -pipe "
CXXFLAGS="${CFLAGS} "
由于还有些包无法使用clang编译,还需要一个文件定义这些clang编译不过,而需要使用gcc的包列表。
/etc/portage/package.env文件:
######## clang faild
sys-boot/grub gcc
sys-devel/binutils gcc
sys-devel/gcc gcc
sys-boot/syslinux gcc
sys-firmware/sgabios gcc
dev-lisp/clisp gcc
dev-lisp/sbcl gcc
dev-libs/openssl gcc
app-emulation/qemu gcc
app-emulation/wine gcc
sys-devel/gdb gcc
media-tv/xbmc gcc
media-libs/libogg gcc
media-sound/wavpack gcc
dev-libs/libffi gcc
sys-libs/libstdc++ gcc
sys-libs/libstdc++-v3 gcc
sys-fs/e2fsprogs gcc
app-text/stardict gcc
app-crypt/gnupg gcc
dev-db/tora gcc
media-sound/amarok gcc
net-print/cups gcc
#net-fs/samba gcc
app-cdr/cdrtools gcc
kde-base/libkdcraw gcc
sys-fs/mtools gcc
sys-apps/busybox gcc
sys-power/cpupower gcc
x11-libs/libva gcc
app-crypt/mit-krb5 gcc
dev-libs/crypto++ gcc
dev-cpp/tbb gcc
sci-libs/fftw gcc
media-gfx/gimp clang
kde-base/libkipi gcc
kde-base/libkdcraw gcc
dev-db/hyperdex gcc

重新编译整个系统,或者让系统逐渐更新为clang编译的包。
对于一般的包,gcc与clang编译的包是二进制兼容的,系统运行不成问题。

这样定制配置后,比如有些可以使用intel编译的包,使用gentoo的编译系统也能无障碍编译了。
甚至,还可以使用gentoo的编译配置,实现交叉编译工具管理一些交叉编译的包。


原文: http://qtchina.tk/?q=node/746

Powered by zexport