システムで標準に利用されている「gcc」のコンパイルオプションを変更することで、kernelおよびportsを特定の用途にあわせて最適化してコンパイルすることができます。
最適化の方法は、大きく分けて「実行速度」「バイナリのサイズ」の2通りです。
このページでは、この最適化コンパイルの方法について説明します。
「GCC」が参照する設定ファイル「/etc/make.conf」に下記の記述を追記します。
CPUTYPE=i686 CFLAGS= -O2 -fno-strict-aliasing -pipe COPTFLAGS= -O2 -fno-strict-aliasing -pipe |
「CPUTYPE=i686」はPentium Pro以降のCPUを表しています、利用する環境にあわせ、適宜変更してください。(指定できる形式については、「man gcc」をご確認ください。)
「CFLAGS」および「COPTFLAGS」のセクションにある「-O2」は、実行時のスピードを最適化するパラメータです。
一般的にバイナリの実行速度が速くなる代わりに、バイナリサイズが大きくなります。
「-fno-strict-aliasing」は、型違いのポインタが同じアドレスを指すようなコードで、誤った最適化が行われないようにするための指定です。(FreeBSD 5.x/FreeBSD 6.xで採用されているgcc 3.xでは、「-O2」を指定すると「-fstrict-aliasing」がデフォルトで有効になってしまうため、これを抑止しています。)
関数をインライン展開してより強力な実行速度最適化を行う「-03」パラメータも存在しますが、kernel内の一部のデバイスや、portsのコンパイル時に不具合を引き起こす場合があるため、お勧めできません。
設定の方法は「実行速度の最適化」のときと同じで、「/etc/make.conf」に下記の記述を追記します。
CPUTYPE=i686 CFLAGS= -Os -fno-strict-aliasing -pipe COPTFLAGS= -Os -fno-strict-aliasing -pipe |
「-Os」は、生成されるバイナリファイルのサイズがより小さくなるよう、最適化を行うパラメータです。
一般的にバイナリファイルのサイズが小さくなる代わりに、実行速度が遅くなります。
