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
|