Cygwin - 最新の GCC をソースからインストール!
Updated:
当方が普段使用している Cygwin 1.7.15 には、パッケージからインストール可能な GCC (GNU Compiler Collection) 3.4.4 が入っています。 しかし、当記事執筆時点では GCC は 4.7.1 が最新のようです。
C++ でプログラミングしたいものがあるため、GCC の最新版をソースからインストールしてみました。
作業記録
0. 前提条件
作業した環境は Cygwin 1.7.15 です。
1. 事前準備
以下のものを予め setup.exe 等でインストールしておく。
- bash (Base section)
- gzip (Base section, 1.2.4以上)
- binutils (Devel section)
- bzip2 (Utils section, 1.0.2)
- gcc-core (Devel section, 他の C コンパイラでもOK)
- gcc-g++ (Devel section, C++ コンパイラをビルドするなら必要)
- gcc-ada (Devel section, Ada コンパイラをインストールするなら必要)
- m4 (Interpreters section)
- make (Devel section, 3.79.1以上)
- zip (Archive section, Java をインストールするなら必要)
- unzip (Archive section, Java をインストールするなら必要)
- gcc-java (Devel section, Java で jar コマンドに必要)
さらに、パッケージのバージョンとステータスをチェックしておく。
$ cygcheck -c \
bash binutils bzip2 cygwin gcc-ada gcc-core gcc-g++ gcc-java gzip m4 make unzip zip
Cygwin Package Information
Package Version Status
bash 4.1.10-4 OK
binutils 2.22.51-2 OK
bzip2 1.0.6-2 OK
cygwin 1.7.15-1 OK
gcc-core 3.4.4-999 OK
gcc-g++ 3.4.4-999 OK
gzip 1.4-1 OK
m4 1.4.16-1 OK
make 3.82.90-1 OK
unzip 6.0-10 OK
zip 3.0-11 OK
gcc-ada, gcc-java が表示されないけど。。。
1. アーカイブダウンロード
GCC のビルドに必要な以下のアーカイブを作業用ディテクトリ(無ければ作成する)に移動してダウンロードする。 当方は、/usr/src ディテクトリに wget コマンドでダウンロードした。 (参考にしたサイトでは、作業ディレクトリは /usr/local/contrib としていました。) 各リンクはすぐに見つけられると思います。
- GMP ( 多倍精度演算ライブラリ )
- http://gmplib.org/ から “gmp-5.0.5.tar.bz2”
- MPFR ( 多倍精度浮動小数演算ライブラリ )
- http://mpfr.org/ から “mpfr-3.1.0.tar.bz2”
- MPC ( 多倍精度複素数演算ライブラリ )
- http://www.multiprecision.org/ から “mpc-0.9.tar.gz”
- GCC ( GNU コンパイラコレクション本体 )
- http://gcc.gnu.org/mirrors.html から “gcc-4.7.1.tar.bz2”
$ cd /usr/src
$ wget ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2
$ wget http://www.mpfr.org/mpfr-current/mpfr-3.1.0.tar.bz2
$ wget http://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.7.1/gcc-4.7.1.tar.bz2
2. 環境変数の設定
シェルに bash を使っているのなら、.bash_profile もしくは .bashrc に以下の記述を追加し、source コマンドで有効化(もしくは Cygwin 再起動)する。
$ vi ~/.bash_profile
export LD_LIBRARY_PATH=/usr/local/lib
export LIBRARY_PATH=/usr/local/lib
export CPATH=/usr/local/include
$ source ~/.bash_profile
3. GMP ビルド&インストール
作業用ディレクトリ(当方は /usr/src )へ移動して、以下のコマンドを実行する。 よくある手順です。
$ cd /usr/src
$ tar -xf gmp-5.0.5.tar.bz2
$ cd gmp-5.0.5
$ ./configure
$ make
$ make check
$ make install
$ make clean
ここで、GMP 有効化のため Cygwin を再起動する。 (当方の場合、こうしないと次の MPFR がビルドできなかったので。)
4. MPFR ビルド&インストール
作業用ディレクトリ(当方は /usr/src )へ移動して、以下のコマンドを実行する。 よくある手順です。
$ cd /usr/src
$ tar -xf mpfr-3.1.0.tar.bz2
$ cd mpfr-3.1.0
$ ./configure
$ make
$ make check
$ make install
$ make clean
ここは Cygwin の再起動は不要だった。
5. MPC ビルド&インストール
作業用ディレクトリ(当方は /usr/src )へ移動して、以下のコマンドを実行する。 よくある手順です。
$ cd /usr/src
$ tar -xf mpc-0.9.tar.gz
$ cd mpfr-3.1.0
$ ./configure
$ make
$ make check
$ make install
$ make clean
ここも Cygwin の再起動は不要だった。
6. GCC ビルド&インストール
今までの手順とは少しだけ異なる。 ビルド用のディテクトリを別途作成する必要がある。 (今回インストールするのは C, C++ のみ)
$ cd /usr/src
$ tar -xf gcc-4.7.1.tar.bz2
$ mkdir build
$ cd build
$ ../gcc-*/configure --enable-languages=c,c++
$ make
$ make install
$ make clean
当方の環境では、 make に約6時間半かかった。また、make check はできなかったがその他の処理は正常に完了した。 インストールできているか確認してみる。
$ gcc --version
gcc (GCC) 4.7.1
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ g++ --version
g++ (GCC) 4.7.1
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7. テスト用ソース作成
コンパイルテスト用に簡単な C++ ソースを作成する。 【ファイル名:hello_world.cpp】
#include <iostream>
int main()
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
8. コンパイル&実行
作成した C++ ソースをコンパイルして実行する。
$ g++ hello_world.cpp -o hello_world
$ ./hello_world
Hello, World!
テスト成功!
9. その他
参考にしたサイトでは、最新の GMP 5.0.5, MPC 0.9 のビルドの前に設定ファイルの変更が必要とありましたが、当方は対応していません。 変更しなくても大丈夫でした。(今のところ)
参考サイト
以下のサイトを参考にしました。
これで、Cygwin の最新の GCC 環境が整いました。
以上。
Comments