MinGW build.blog

カテゴリ: Develop

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。

前回「podchecker」が無いため、強引にdos2unix のインストールを行いました。perl のコンパイルは一度だけ試してみて、自分には手に手に負えなそうだったので、後回しにしようという判断でした。しかし、configure スクリプトが動くようになった今、configure スクリプトがないgit / svn のソースをビルドするためには、autotools の他にperl が必要不可欠になり、いつまでも逃げていられないのが現実です。


3-16. perlのインストール
(リスト番号104)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。

以前bash をmingw-gcc でビルドして、テストで新MSYSを起動してみると、
0 [main] bash 660 open_stackdumpfile: Dumping stack trace to bash.exe.stackdump
0 [main] bash 3660 open_stackdumpfile: Dumping stack trace to bash.exe.stackdump
0 [main] bash 2180 open_stackdumpfile: Dumping stack trace to bash.exe.stackdump
..............

というエラー。原因は~/.profile が以前書いた方法でWindows のエディタで作ったため、改行コードがWindows のCR+LF になっていたことでした。MSYS 用のbash ではこの辺は対策が取られていますのでエラーは出ません。


3-15. dos2unixのインストール
(リスト番号25)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。


前回、「make をmake するmake が無い」というオチがつきました散々引っ張っておいてあれですが、make はMinGW.org のmsys-make のソースを使います。
前回のconfigure スクリプトの最後のほうで、

WARNING: Your system has neither waitpid() nor wait3().
         Without one of these, signal handling is unreliable.
         You should be aware that running GNU make with -j
         could result in erratic behavior.

ということなので、waitpid もwait3 もmingw には無いので並列コンパイル(-j オプション)を諦めるだけなら良いのですが、例のMSYS のパスの問題もあるので、ここは断腸の思いでMSYS 用のソースを使います。


3-14. make のインストール
(リスト番号87)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。

前回までのあらすじ。

新たにビルドした/new-msys に存在しているのは、msysCOREbashcoreutils だけという状態ですが、msys-1.0.dll に依存しないwgettar (bsdtar)は/mingw 以下にインストールするというローカルルールで構築していますので、make のソースのダウンロード・解凍が/new-msys のmsys.bat からでも可能になりました。
wget http://ftp.gnu.org/gnu/make/make-3.82.tar.gz
tar xvf make-3.82.tar.gz
そこで早速
cd make-3.82
./configure
とやってみますと、
./configure: line 539: sed: command not found
どうもsed とかいうヤツが必要らしいぞ!

ということで、もうしばらくこの茶番劇にお付き合いください・・・。


3-11. sed のインストール
(リスト番号108)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。

さてmake-3.81.90.tar.gzをダウンロードしたはいいものの肝心の解凍ができません。これはどうにかしなければ!

と、寒い小芝居は無視して、今回はアーカイブ関連のツール、ライブラリのビルドを行います。
近代的かつコンパクトな環境を目指す当ブログとしてはlibarchive 一択です。古い本家tar (以下GNU tarト称ス) よりも、libarchive に含まれるbsdtar の方がはるかに便利です。
libarchive のconfigure スクリプトを走らせて、事前にインストールするライブラリの取捨選択を行っていきます。(zlibxzopenssl はすでにインストール済みです。)


3-8. libxml2 のインストール
(リスト番号82)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。

新MSYSがなんとか動くようになりましたが、MSYS 本来の目的であるところのビルドがまだできない状態です。
そこで今回からGNU MAKE のビルドに挑みたいと思いますが、make-3.82.tar.gz をダウンロードしに行く服はあっても、ダウンロードするツールがありません。これはどうにかしなければ!

と、わざとらしい前フリはさておき、今回はダウンロードツール、wgetのビルドを目指します。
wget のビルドにはGnuTLSOpenSSL のどちらかが必要になりますが、MSYS で採用されているOpenSSL を選択します。


3-6. OpenSSLのインストール
(リスト番号72,102)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。

前回で残されていた宿題は一応提出したつもりです。
しかし、後2つだけ心残りがありますので片付けたいと思います。
すなわち、msys-dvlpr のインストールのついでに導入した、termcap とregex という2つのlegacy なライブラリです。例によってmsys-dvlpr を使用して、MinGW.org のソースをビルドすれば良いのですが、できれば、拙作のビルドシステム (mingw32-gcc) を用いてビルドしたいと思います。

検討の結果、遺憾ながら今回は弊システムへの採用を見送らせて頂くことになりました。誠に不本意な結果かと存じますが、あしからずご了承下さいますようお願い申し上げます。
末筆ながら、今後のご健勝をお祈り申し上げます。


3-4. PDCurses (termcapの代用)のインストール
(リスト番号80,110)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
MSYS編冒頭から、msys-dvlprなるものをバイナリでインストールするという、上記目標その1. に反する恥体を晒しています。弁解する気はないですが、理由を説明させて頂きますと、

1. よりPOSIX に近い環境としてMSYS 環境が絶対に必要であり、msys-1.0.dll とのリンクが回避できないこと。

2. そのためには、msys-gcc が必須となること。そもそも、MINGW のgcc とMSYS のgcc は別物です。いわゆるtriplet と呼ばれるものが「i686-pc-mingw32」と「i686-pc-msys」という違いがあります。そのため、msys-gcc を使うことは上記の目標その3. にも反し、厳密にいうとクロスコンパイルに当たります。

3. 妥協案として、msys-gcc を自分でビルドすることも考えましたが、最新のgcc (4.x系列) をmsys-gcc としてビルドしてる例は世界中でもわずかで、自分には不可能です。

4. だからといって今更gcc-3.x系列をビルドする気はありません。(ここでやっと上の目標その2. が活きてきました。)

5. 結論。今後ビルドするパッケージは、なるべく最新のmingw-gcc のみを使用し、msys-gcc が必要な場合のみmsys-dvlpr 環境を利用する事にしました。よって、~/.profile の「INCLUDE_PATH」「LIBRARY_PATH」からも/usr/include、/usr/lib を削除します。

とはいえ、やはりmsys-dvlpr 環境も自分でビルドしてみたいと思う人もいるかと思います。私は止めません。それは非常に簡単な行為なのですから。(翻訳サイト風)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
sh.exe もインストールできたので、新msys.bat を起動してみると、
sh: mkdir: command not found
sh: cp: command not found
sh: cd: /home/(ユーザー名:秘密): No such file or directory
mkdir やcp といった基本コマンドがないため、こんなエラーが出ます。これらのコマンドが含まれるのがcoreutilsです。これも最新版のソースはコンパイルすら通らなかったので、またMinGW.org 様よりソースを拝借しました。

3-3. coreutilsのインストール
(リスト番号20,21)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
早速試しに新MSYS のmsys.bat を起動してみると、
Cannot find the rxvt.exe or sh.exe binary --aborting.
rxvt は面倒なのでsh(=bash) をインストールすることにしました。
前回のmsysCOREをMinGW.org版でビルドしたため、msys-1.0.dllに依存するものは、w64版でコンパイルできないという事態に陥りました。よって、msys-1.0.dllを使うMSYSの根底部はMinGW.org版を使用せざるを得なくなりました。

3-2. bashのインストール
(リスト番号14)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
MSYS編第1弾は、msysCOREです。
以下やってることは簡単なのですが、gcc-4.xを使ったり、git版をビルドしようとすると急に面倒になるので諦めました。

3-1. msysCOREのインストール
(リスト番号97~100)

続きを読む


今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
以下2012年11月吉日におこなった自己流のMinGW環境ビルドのerror.blogです。

Part 1
Part 2
Part 3
Part 4
Part 5
Part 6
Part 7
Part 8
Part 9


ここまでのmingwのパッケージを全て完了した時点で、

目標達成率 = 61 / 115 (残り 54) mingw32編msys編

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
以下2012年11月吉日におこなった自己流のMinGW環境ビルドのerror.blogです。

mingwのリストで最後まで残ったgdbのコンパイルに挑みます。gdbのconfigureでちょうどexpatとliblzmaがチェックされるので、このタイミングでインストールしました。これで、mingw編は終了。次回からは怒涛のmsys編に移ります。

2-19. expatのインストール
(リスト番号47,48)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
以下2012年11月吉日におこなった自己流のMinGW環境ビルドのerror.blogです。

以下Part 2と同じ物を再ビルドしていきます。1回目とは違って、正直順番はどうでもいいのですが、最低限binutilsの後にgccのほうがいいはずです。また前回同様ビルドはソースツリーの中で行わずに、新規ディレクトリの中で行いました。

2-15. binutilsのインストール
(リスト番号15)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
以下2012年11月吉日におこなった自己流のMinGW環境ビルドのerror.blogです。

以下、Mercurial(hg)、subversion(svn)、gitといった多様なバージョン管理ツールを駆使して、最新のソースツリーを使用します。これらのバージョン管理ツールはwin32バイナリが公開されていますが、特にMSYSにインストールしたりするのは不本意なので、cygwinのパッケージをインストールしてcygwin上で行いました。↑の目標その3にcygwinは使わないと書いてますが、コンパイルではなくソースを収得するだけなのでセーフとします。(今決めました)

2-10. gmpのインストール
(リスト番号52,53,54)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
以下2012年11月吉日におこなった自己流のMinGW環境ビルドのerror.blogです。

gettextを使用しないlibiconv→gettext→gettextを使用するlibiconvの順でlibiconvを2回インストールするのがポイントです。

2-7. libiconvのインストール(1)
(リスト番号59,60,61)

続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
以下2012年11月吉日におこなった自己流のMinGW環境ビルドのerror.blogです。

2-5. zlibのインストール
(リスト番号83,84,115)


続きを読む

今回MinGWをすべて自分でビルドするにあたってのコンセプト
目標その1. ビルドに必要な開発補助ツール・ライブラリなども可能な限りソースからコンパイルする。現在の達成状況はこちら→mingw32編msys編
目標その2. 可能な限り最新版ソースを使用する。(svn、git利用も含む)
目標その3. UNIXからの移植がしやすいmingw-w64を使用。ただし32bitマシン上のネイティブ環境ですべてコンパイルすること。クロスコンパイル(Cygwinを含む)は無しの方向。
以下2012年11月吉日におこなった自己流のMinGW環境ビルドのerror.blogです。

これから本番のgccビルドを目指して一直線に進みますが、このタイミングでpkg-configのスタティック版を以下のページから入手に/mingw/binに挿入しました。

http://ingar.satgnu.net/devenv/mingw32/local.html#pkgconfig

また、↑に書いてある通りにpkg-config.shを用意し、~/.profileに以下を追加しました。
export PKG_CONFIG=/mingw/bin/pkg-config.sh
export PKG_CONFIG_PC_PATH="/mingw/lib/pkgconfig"
export PKG_CONFIG_PATH="/mingw/lib/pkgconfig"

2-2. autoconfのインストール
(リスト番号1,2,3)

続きを読む

最初のMinGW環境でインストールされたもののリストです。mingw32の番号が飛んでいますが、このblog内で共通のID番号となっています。
$ ls /mingw/var/cache/mingw-get/packages | grep -n msys

続きを読む

最初のMinGW環境でインストールされたもののリストです。msysの番号が飛んでいますが、このblog内で共通のID番号となっています。
$ ls /mingw/var/cache/mingw-get/packages | grep -n mingw32

続きを読む

このページのトップヘ