Gentoo compile flags

From ThinkWiki
Revision as of 10:22, 19 November 2005 by 80.220.48.208 (Talk) (Example files)
Jump to: navigation, search
Gentoo

Gentoo compile flags

This page gives an introduction to Gentoo compile flags.

About compile flags in Gentoo

One strength of Gentoo is the ability to use global flags for code optimizing. This is done through the file /etc/make.conf (man page). Since the Pentium Mobile (Centrino) used in some Thinkpads supports the mmx and sse extensions of the insturuction set, using compile flags can speedup programs quite a bit. To use optimized code, you have to adjust the USE (Gentoo Handbook) variable, which contains the libraries and extensions you want to use and the CFLAGS variable, which contains compiler flags, that portage passes along to gcc.

If you want to set specific flags for only one package, you can also use the file /etc/portage/package.use instead of the USE variable in make.conf.

Which flags to use

In order to adjust USE correctly, you have to find out, which instruction set extensions your processor supports. You can use google for this, or look at /proc/cpuinfo. The Pentium M instruction set is compatible to a Pentium 4 and supports mmx and sse extensions, so your make.conf should contain something like this:

USE="mmx mmx2 sse sse2"
CFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer"

If you have a Pentium-M cpu you should use "-march=pentium3" since it's a Pentium 3 deriviate, unless you're using GCC >=3.4 which is marked as unstable. GCC 3.4 has a specific march-setting for Pentium-M machines.

You might also use -O3, but it may cause crashes in your programs if you optimize too much. Independently of the CPU it's also a good idea to tell portage which libraries to use. If you leave away all the libraries you don't need, you can save compile time, get a smaller binary size and faster programs.

For instance, if you know you don't use Gnome and don't need java support in you binaries, but you want to use KDE, your make.conf might contain

USE="mmx mmx2 sse sse2 qt kde -gnome -java"

If you want gnome support in your binaries at any later time, you just have to edit make.conf an run "emerge --newuse world" (this will take some time though).

Example files

These are the make.conf and package.use files I use for my T40P:

  • make.conf
USE="X mmx mmx2 sse sse2 qt kde -gpm -gtk -gtk2 -gnome -arts -alsa -cups -java -esd -v4l -v4l1 -samba -ipv6 -directfb -lirc -svga"
CFLAGS="-O2 -march=pentium4 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"
  • package.use
sys-libs/glibc userlocales
app-laptop/tpb xosd
media-video/mplayer dvd xanim divx4linux network xvid live
media-libs/xine-lib dvd

Other portage features

There are lots of other great features in portage (the Gentoo package managing system). If you want to use Gentoo, you should read the docs on gentoo.org and the man pages of portage and make.conf.