GCC とは
GCC とは、the GNU Compiler Collection と呼ばれる、GNU のコンパイラ群です。
当初は GNU C Compiler (GNU CC) と呼ばれ、主に C 言語のコンパイラでした。
現在は、C 言語コンパイラ (gcc) だけでなく、C++ 言語のコンパイラ (c++, g++)、FORTRAN コンパイラ (g77)、そして Objective-C、Java (gcj)、Ada (gnat) 及びこれらのライブラリが提供されています。
Linux やその他の UNIX 系システムで使われている、最も有名な、
フリーなコンパイラでしょう。
サイトリスト
- WEB site
- http://www.gnu.org/software/gcc/gcc.html
- Primary site
- ftp://ftp.gnu.org/gnu/gcc/
- Mirror site
- ftp://ring.asahi-net.or.jp/pub/GNU/gcc/
- ftp://ring.ocn.ad.jp/pub/GNU/gcc/
コンパイル・インストールの注意点
- 特に注意すべきことはありません。configure と make で構築できます。
version 2.95
- ここでは /usr/local/gcc-2.95/ 以下に全てインストールされるように --prefix=/usr/local/gcc-2.95 を configure のオプション に指定しています。もちろん指定しなければ /usr/local 以下になるハ ズです。
- 通常は make bootstrap で構築できます。ここでは最適化のた めにコンパイルのオプションに CFLAGS='-O2', CXXFLAGS='-O2', LIBCFLAGS='-O2', LIBCXXFLAGS='-O2 -fno-implicit-templates' を与えて make の実行をしています。ただし、一部有効にならなかったような気がしま すので、少々 Makefile を修正してしまっています。
- ここでは、全てのコンパイラをまとめてインストールするために gcc-2.95.tar.gz を使用しています。
version 3.2.3
- ここでは /usr/local/gnu/ 以下に全てインストールされるように --prefix=/usr/local/gnu を configure のオプションに指定しています。もちろん指定しなければ /usr/local 以下になるハズです。
- また、私はプログラム名にバージョン番号を付けた形にしたいため、 --program-suffix=-3.2.3 を configure のオプションに指定しています。このため gcc は gcc-3.2.3 という名前でインストールされています。そして利便性から、 gcc にシンボリックリンクしています。
- 通常は make bootstrap で構築できます。
- ここでは、全てのコンパイラをまとめてインストールするために gcc-3.2.3.tar.bz2 を使用しています。
- GCC の共有ライブラリ (ランタイムライブラリ) は $prefix/lib にインストールされることに注意してください。環境によっては /etc/ld.so.conf に $prefix/lib を追加し、ldconfig を実行する必要があります。
version 3.4.6
- ここでは /usr/local/gnu/ 以下に全てインストールされるように --prefix=/usr/local/gnu を configure のオプションに指定しています。もちろん指定しなければ /usr/local 以下になるハズです。
- また、私はプログラム名にバージョン番号を付けた形にしたいため、 --program-suffix=-3.4.6 を configure のオプションに指定しています。このため gcc は gcc-3.4.6 という名前でインストールされています。そして利便性から、 gcc にシンボリックリンクしています。
- 通常は make bootstrap で構築できます。
- ここでは、全てのコンパイラをまとめてインストールするために gcc-3.4.6.tar.bz2 を使用しています。
- GCC の共有ライブラリ (ランタイムライブラリ) は $prefix/lib にインストールされることに注意してください。環境によっては /etc/ld.so.conf に $prefix/lib を追加し、ldconfig を実行する必要があります。
コンパイル・インストールの手順
GCC のコンパイル・インストールのログは非常に長いです。
ですので、ここでは、私がインストールした際の手順だけをログから抜き出し、
まとめています。
詳細は以下の「コンパイル・インストールのログ」を参照してください。
GCC version 2.95
# ls -l gcc-2.95.tar.gz # tar xfz gcc-2.95.tar.gz # cd gcc-2.95 # ls # mkdir objdir # cd objdir/ # time ../configure --prefix=/usr/local/gcc-2.95 # vi gcc/Makefile # diff -u gcc/Makefile~ gcc/Makefile # time make CFLAGS='-O2' CXXFLAGS='-O2' LIBCFLAGS='-O2' LIBCXXFLAGS='-O2 -fno-implicit-templates' bootstrap # su # make install
GCC version 3.2.3
# ls -l # bzip2 -dc gcc-3.2.3.tar.bz2 | tar xf - # cd gcc-3.2.3 # ls # mkdir objdir # cd objdir/ # ../configure --prefix=/usr/local/gnu --program-suffix=-3.2.3 # time make bootstrap # su # make install # (cd /usr/local/gnu/bin; ln -fs gcc-3.2.3 gcc) # (cd /usr/local/gnu/bin; ln -fs cpp-3.2.3 cpp) # (cd /usr/local/gnu/bin; ln -fs c++-3.2.3 c++) # (cd /usr/local/gnu/bin; ln -fs c++filt-3.2.3 c++filt) # (cd /usr/local/gnu/bin; ln -fs g77-3.2.3 g77) # (cd /usr/local/gnu/bin; ln -fs g++-3.2.3 g++) # ldconfig # exit
GCC version 3.4.6
# ls -l # bzip2 -dc gcc-3.4.6.tar.bz2 | tar xf - # cd gcc-3.4.6 # ls # mkdir objdir # cd objdir/ # ../configure --prefix=/usr/local/gnu --program-suffix=-3.4.6 # time make bootstrap # su # make install # (cd /usr/local/gnu/bin; ln -fs gcc-3.4.6 gcc) # (cd /usr/local/gnu/bin; ln -fs cpp-3.4.6 cpp) # (cd /usr/local/gnu/bin; ln -fs c++-3.4.6 c++) # (cd /usr/local/gnu/bin; ln -fs c++filt-3.4.6 c++filt) # (cd /usr/local/gnu/bin; ln -fs g77-3.4.6 g77) # (cd /usr/local/gnu/bin; ln -fs g++-3.4.6 g++) # ldconfig # exit