読者です 読者をやめる 読者になる 読者になる

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

GTKmm3を再コンパイルする

GTKmm3を再コンパイルする

前回まで

  1. GTKmm3をソースコードからコンパイルした。
  2. しかし、GTKmm3を使ったHelloWorldに失敗した。
  3. 以前までのイビツな環境が実行時エラーの原因だと推測した。(gcc4.6.2, g++5.3.0)
  4. そこで、今回は前回インストールしたMinGW5.3.0の環境にて再度GTKmm3をコンパイルしなおすことにした。

こちらを参考に環境構築した。

今回

以前に構築した環境があるので、それを真似してコピペすればいいはず。

MinGW パス
以前 C:/MinGW
今回 C:/MinGW_GET

手順

必要なファイルを揃える。

  1. C:\MinGW\msys\1.0にあるgtk3ディレクトリを新C:\MinGW_GET\msys\1.0にコピペする。
  2. C:\MinGW\msys\1.0にあるhomeディレクトリを新C:\MinGW_GET\msys\1.0にコピペする。
  3. C:\MinGW_GET\msys\1.0gtkmm3ディレクトリを新規作成する

次に環境構築を整える。

環境変数

  1. C:/tools/...のパスを削除する
  2. C:/MinGW/...のパスをC:/MinGW_GET/...にする。

ユーザ環境変数

環境変数
LIBRARY_PATH C:/MinGW/msys/1.0/gtk3/bin; C:/MinGW_GET/msys/1.0/gtk3/bin;
MAKE C:/MinGW/msys/1.0/bin/make.exe C:/MinGW_GET/msys/1.0/bin/make.exe
PKG_CONFIG_PATH C:/MinGW/msys/1.0/gtk3/lib/pkgconfig;C:/MinGW/msys/1.0/gtkmm3/lib/pkgconfig; C:/MinGW_GET/msys/1.0/gtk3/lib/pkgconfig;C:/MinGW_GET/msys/1.0/gtkmm3/lib/pkgconfig;
PATH C:\tools\msys32;を削除した(2つあった)

システム環境変数

環境変数
LIBRARY_PATH C:/MinGW/msys/1.0/gtk3/bin; C:/MinGW_GET/msys/1.0/gtk3/bin;

Path変数は以下のようにした。

  • C:/MinGW/msys/1.0/gtk3/bin;を削除した
  • C:/tools/mingw32/bin;を削除した
  • C:/MinGW/bin;C:/MinGW_GET/binに変更した
  • 以下のように変更した
    • 前:C:/MinGW/msys/1.0/bin;C:/MinGW/msys/1.0/gtk3/bin;C:/MinGW/msys/1.0/home/m4-1.4.14-1-bin/bin;
    • 後:C:/MinGW_GET/msys/1.0/bin;C:/MinGW_GET/msys/1.0/gtk3/bin;C:/MinGW_GET/msys/1.0/home/m4-1.4.14-1-bin/bin;

gcc,g++の確認

環境変数にて使われるgcc,g++が、mingw-get.exeで取得したものであるか確認する。

mingw-get.exeで取得したgcc,g++は、C:/MinGW_GET/binにある。

A
  1. コンソールを起動する
  2. cd C:/MinGW_GET/binコマンドを実行する
  3. gcc --versionを実行する
  4. g++ --versionを実行する
  5. 上記のバージョン情報をメモしておく
ログ
C:\MinGW_GET\bin>gcc --version
gcc (GCC) 5.3.0
Copyright (C) 2015 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.

C:\MinGW_GET\bin>g++ --version
g++ (GCC) 5.3.0
Copyright (C) 2015 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.
B
  1. cd C:/などgcc,g++が存在しないパスへカレントディレクトリを移動する
  2. 同様に、以下のコマンドを実行する
  3. gcc --versionを実行する
  4. g++ --versionを実行する
ログ
C:\>gcc --version
gcc (GCC) 5.3.0
Copyright (C) 2015 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.

C:\>g++ --version
g++ (GCC) 5.3.0
Copyright (C) 2015 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.
判定

結果は以下の場合がある。

  • "A"と"B"でバージョン情報が同じ
    • OK。
  • "A"と"B"でバージョン情報が違う
    • NG。旧MinGWのパスが通っている。旧MinGWのパスを削除し、新MinGWのパスを通すべし。
  • "B"で'g++' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。と出る
    • 環境変数のパスが通っていない。新MinGWのパスを通すべし。

      C:>g++ --version 'g++' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。

めでたく一致していた。環境変数の設定は完了。 これでGTKmm3のコンパイルには、gcc5.3.0, g++5.3.0が使われるはず。

ちなみに、以前にコンパイルしたときは、gcc 4.6.2, g++ (i686-posix-sjlj-rev0, Built by MinGW-W64 project) 5.3.0だった。

念のために

べつのMinGWのバージョン情報も確認しておく。 これらの表示になってしまったら、環境変数のパスが通ってしまっているということになる。 パスから削除すべき。

C:/MinGW/bin

昔どうやってインストールしたか忘れたMinGW。古い。

C:\MinGW\bin>gcc --version
gcc (GCC) 4.6.2
Copyright (C) 2011 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.

C:/MinGW/bing++.exeはない。gcc --versionコマンドを実行したら、環境変数パスから、C:/MinGW_GET/binのg++.exeを実行した結果が返ってくる。

C:/tools/mingw32/bin

chocolateyでインストールしたMinGW

C:\tools\mingw32\bin>gcc --version
gcc (i686-posix-sjlj-rev0, Built by MinGW-W64 project) 5.3.0
Copyright (C) 2015 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.

C:\tools\mingw32\bin>g++ --version
g++ (i686-posix-sjlj-rev0, Built by MinGW-W64 project) 5.3.0
Copyright (C) 2015 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.

shを実行する

  1. C:\MinGW_GET\msys\1.0\msys.batを実行する
  2. cd C:/MinGW_GET/msys/1.0/homeコマンドを実行する
  3. sh 00_all.shコマンドを実行する

1時間43分かかった。

無事、C:\MinGW_GET\msys\1.0\gtkmm3\bin配下にDLLが作成されていることを確認した。

以前の環境で生成した同名のDLLとくらべるとファイルサイズが違う。 異なるコンパイラを使ったことによる違いだと思われる。

所感

次回、HelloGTKmm3のリベンジができそう。