mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Cygwin - 最新の GCC をソースからインストール!

[ プログラミング ] [ Cygwin, C言語 ]

こんばんは。

当方が普段使用している 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 コマンドに必要)

さらに、パッケージのバージョンとステータスをチェックしておく。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ 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 としていました。) 各リンクはすぐに見つけられると思います。

1
2
3
4
5
$ 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 再起動)する。

1
2
3
4
5
$ 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 )へ移動して、以下のコマンドを実行する。 よくある手順です。

1
2
3
4
5
6
7
8
$ 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 )へ移動して、以下のコマンドを実行する。 よくある手順です。

1
2
3
4
5
6
7
8
$ 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 )へ移動して、以下のコマンドを実行する。 よくある手順です。

1
2
3
4
5
6
7
8
$ 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++ のみ)

1
2
3
4
5
6
7
8
$ 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 はできなかったがその他の処理は正常に完了した。 インストールできているか確認してみる。

1
2
3
4
5
6
7
8
9
10
$ 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】

1
2
3
4
5
6
7
#include <iostream>

int main()
{
  std::cout << "Hello, World!" << std::endl;
  return 0;
}

8. コンパイル&実行

作成した C++ ソースをコンパイルして実行する。

1
2
3
$ g++ hello_world.cpp -o hello_world
$ ./hello_world
Hello, World!

テスト成功!

9. その他

参考にしたサイトでは、最新の GMP 5.0.5, MPC 0.9 のビルドの前に設定ファイルの変更が必要とありましたが、当方は対応していません。 変更しなくても大丈夫でした。(今のところ)

参考サイト

以下のサイトを参考にしました。


これで、Cygwin の最新の GCC 環境が整いました。

以上。

Comments