List of mingw - Baldanders.info
tag:Baldanders.info,2015-05-31:/tags
2015-05-31T09:00:00+00:00
バルトアンデルスは連続的な怪物,時間の怪物である。(ホルヘ・ルイス・ボルヘス 『幻獣辞典』より)
https://baldanders.info/images/avatar.jpg
https://baldanders.info/images/avatar.jpg
Baldanders.info リニューアルに向けて
tag:Baldanders.info,2015-05-31:/blog/000848/
2015-05-31T09:00:00+00:00
2015-05-31T09:00:00+00:00
このサイトは MTOS(Movable Type Open Source)で運用しているのだが, MTOS は今年の10月でサポートが切れる。そこで今年の9月を目処にサイトの全面リニューアルを行うことにする。
Spiegel
/profile/
<p> このサイトは <a href="http://www.movabletype.jp/opensource/">MTOS(Movable Type Open Source)</a>で運用しているのだが, MTOS は今年の10月でサポートが切れる。 </p><ul> <li><a href="http://www.movabletype.jp/blog/mtos_support.html">MTOSのサポート方針について | MovableType.jp - CMSプラットフォーム Movable Type -</a></li> </ul><p> もちろん MTOS はオープンソースなので,誰かが引き継いで継続させることも可能なのだが, XML-RPC 自体が時代遅れになりつつあり(現在は JSON REST API が主流),<a href="http://www.movabletype.jp/">Movable Type</a> では事実上見捨てられている。 そもそも SaaS や PaaS が当たり前の時代に自前でサイトを立てて運用することが時代遅れだし,セキュリティ・リスクの高い行為になりつつある。 (ここはレンタルサーバなので下回りの管理はプロバイダがやってくれるけど,それでも CMS などのウワモノは自分で面倒を見ないといけない) </p><p> そうした状況でこのサイトを維持していく意義を考えると,やはりこのサイトは「公開物置」として運用していくのが合理的だと考えるようになった。 そこで今年の9月を目処にサイトの全面リニューアルを行うことにする。 今回の目標は以下のとおり。 </p><ol> <li>既存のサイト構成は変えない</li> <li>オンラインでのコンテンツ管理をやめる。現行のブログはいったん凍結</li> <li>その上でローカルでサイト管理できる仕組みを導入し git 等を使って deploy する(git を使った deploy は導入済みだが CMS が生成するページと conflict する可能性があるので半手動状態)</li> <li>他サービスとの連携を強化する</li> </ol> <section> <h3>現在利用しているサービス</h3> <p> 現在利用している主なサービスは以下のとおり。 </p><ul> <li><a href="http://log.baldanders.info/">Tumblr</a></li> <li><a href="https://www.flickr.com/photos/spiegel/">Flickr</a> & <a href="https://instagram.com/spiegel_2007/">Instagram</a></li> <li><a href="https://delicious.com/spiegel">Delicious</a></li> <li><a href="http://qiita.com/spiegel-im-spiegel">Qiita</a> & <a href="https://medium.com/@spiegel">Medium</a></li> </ul><p> <a href="http://log.baldanders.info/">Tumblr の記事</a> は既にうちのドメインを割り当てて運用しているが,悲しいかな, reblog 以外ではほとんど使わなくなった。 Tumblr は Yahoo! の傘下に入ってからどんどんダメになっていく気がする。 あの広告まみれの Dashboard は見るに耐えない(ので見なくなった)。 </p><p> Flickr は多くの日本人に見つからなかったおかげで非常に居心地のいいサービスになっている(願わくば Delicious のように Yahoo! から独立して欲しい)。 一方の Instagram は「馬鹿に見つかった」状態になってしまい今後に不安を残すが,私にとって Instagram はカメラと連動しているサービスなので,もはや手放せない(ちなみにオリジナルの写真データはストレージ・サービスで保管している)。 </p><p> Delicious は Yahoo! から独立してからとてもよくなった。 これは本当に「幸せな離婚」だったようだ。 Yahoo! は本当に買ってきたサービスを壊すよねぇ。 ちったぁそこにいるユーザのことも考えろっての。 </p><p> <a href="http://qiita.com/spiegel-im-spiegel">Qiita</a> と <a href="https://medium.com/@spiegel">Medium</a> は現在の主な遊び場である。特に最近はセキュリティ脆弱性情報のメモ置き場として <a href="http://qiita.com/spiegel-im-spiegel">Qiita</a> を使うようになった。 </p><ul> <li><a href="http://qiita.com/spiegel-im-spiegel/items/a6e149b41115bee6b41c">セキュリティ - VENOM 脆弱性について - Qiita</a></li> <li><a href="http://qiita.com/spiegel-im-spiegel/items/af0cdb620ad79c4d0f36">セキュリティ - TLS における Diffie-Hellman 鍵交換の脆弱性 - Qiita</a></li> </ul><p> Medium には export 機能があり,いつでも記事を引き上げられる状態(今のところその気はないけど)。 <a href="http://qiita.com/spiegel-im-spiegel">Qiita の記事</a>は草稿版を markdown 形式で保持している。 <a href="http://qiita.com/spiegel-im-spiegel">Qiita の記事</a>はいずれここに引き取りたいと考えている。 </p> </section> <section> <h3>Go Hugo</h3> <p> 「<a href="http://t32k.me/mol/log/hugo/">Jekyllが許されるのは小学生まで</a>」らしいので(笑), CMS(Content Management System)は <a href="http://gohugo.io/">Hugo</a> にしようかと考えているが,まだ全然評価できてない。 というのも Go 言語について調べてたらハマっちゃったのだ。 </p><ul> <li><a href="http://qiita.com/spiegel-im-spiegel/items/dca0df389df1470bdbfa">はじめての Go 言語 (on Windows) - Qiita</a></li> </ul><p> あまり言語にこだわりはないのだが,個人的に Go 言語は相性がいいらしい。 多分 C/C++ 言語から入った人(若い人にはいないかな)は Go はかなりとっつきやすい言語なんじゃないだろうか。 強い型付けは,空気を読まなくていい(つまり文脈依存でない)のが助かる。 型推論は今や C++ にも実装されているくらいなので,あって当たり前。 </p><p> いや,逃避している場合じゃないな。 </p> </section> <section> <h3>MSYS2</h3> <p> <a href="https://baldanders.info/blog/000705/">昨年の苦労</a>は何だったのか。 <a href="http://msys2.github.io/">MSYS2</a> のおかげで簡単に 32bits と 64bits の環境を併設できるようになっていた。 </p><ul> <li><a href="http://qiita.com/spiegel-im-spiegel/items/ba4e8d2418bdfe0c8049">MSYS2 による gcc 開発環境の構築 - Qiita</a></li> </ul><p> pgpdump のビルドがこれでできるかどうか試してみる予定。 </p><p> そういえば, <a href="http://msys2.github.io/">MSYS2</a> の git は 2.4.1 なのだが,非公式ながら <a href="http://gitextensions.github.io/">GIT Extensions</a> で使えるようだ。 </p> <figure style="margin:0 auto;text-align:center;"> <a href="https://www.flickr.com/photos/spiegel/18266339862" title="GIT Extensions preference by Yasuhiro ARAKAWA, on Flickr"><img src="https://c4.staticflickr.com/8/7735/18266339862_3c10ecb656.jpg" width="500" height="351" alt="GIT Extensions preference"/></a> <figcaption><a href="https://www.flickr.com/photos/spiegel/18266339862">GIT Extensions preference</a></figcaption> </figure> <p> ここで <a href="http://msys2.github.io/">MSYS2</a> の git と sh へのパスをセットすれば使えた。 動作が遅くなるのを我慢できるなら,こっちのほうがいいかも。 </p><p> って,逃避している場合じゃないんだって。 </p> </section> <section> <h3>ATOM Editor</h3> <p> ようやく <a href="https://atom.io/">ATOM Editor</a> が手に馴染んできた。 </p><ul> <li><a href="http://qiita.com/spiegel-im-spiegel/items/3d41d98dacc107d73431">ATOM Editor をそろそろ始めようか - Qiita</a></li> </ul><p> 「コマンドパレット」という発想は, Emacs や vi/vim あたりが由来なのかな。 VT 端末で vi で仕事してた頃は(私はコマンドとかすぐに忘れてしまうので)よく使うコマンド一覧を紙に打ち出して,紙を見ながら作業したりして「何やってんだろ,オレ」な状態だったけど,今は入力アシストが強力なので覚えなくても何とかなるのが素晴らしい。 ただコマンドパレットを呼び出すのにキーを3箇所も押さないといけないのはちょっと苦痛なので,(秀丸ではヘルプ表示に割り当てられている) F1 キーを割り当てている。 そういうカスタマイズもテキストファイルでできるのが素敵。 </p><p> <a href="http://hide.maruo.co.jp/software/hidemaru.html">秀丸</a>から乗り換えるにはまだ足りないものがある感じだが,今では入力作業の8割くらいは ATOM でこなせるようになってきた。 プロジェクト機能はまだ使ってないのだが,今のところ使う機会がない。 そういや秀丸にもプロジェクト機能があるけど使ったことないな。 </p><p> いやいやいや。逃避している場合じゃないんだってば,どってんばってん。 </p> </section>
pgpdump のビルドのついでに MinGW-w64 を導入してみる
tag:Baldanders.info,2014-06-22:/blog/000705/
2014-06-22T09:00:00+00:00
2014-06-22T09:00:00+00:00
昨年の時点で pgpdump が 0.28 にアップデートされていた。ビルドしなきゃ!
Spiegel
/profile/
<p> 昨年の時点で <a href="http://www.mew.org/~kazu/proj/pgpdump/ja/">pgpdump</a> が 0.28 にアップデートされていた。 といっても今回は細かい修正のみ。 次のアップデートはおそらく <a href="https://baldanders.info/blog/000702/">SHA-3</a> の議論が OpenPGP や GnuPG で本格化してからとなるだろう。 </p><p> でも,これに気づいたのが今年も4月に入ってから。 昨年・今年といろいろあったとはいえ,ダメ過ぎる,私 orz </p><p> で,自宅マシンは既に<a href="https://baldanders.info/blog/000632/">64bit機に変わってる</a>し,どうせなら git で管理しようと思い始めてゴソゴソ作業しだしたのが今月に入ってから。 で,いろいろ見てたら MinGW って64bit版があるのね。 こりゃあ入れずんばなるまい,と作業を始めたら泥沼にはまってしまった。 まぁよくある話(笑) </p><p> というわけで,その時の作業を覚え書きの形でかいつまんで。 </p> <h3>準備</h3> <p> 今回の目標は以下のとおり。 </p><ol> <li>MinGW のビルド環境を32bit版と64bit版の両方を並列に構築する</li> <li>その上で <a href="http://www.mew.org/~kazu/proj/pgpdump/ja/">pgpdump</a> がビルドできるか確認する</li> <li>ついでに Python 等の環境も MinGW 上で使えるようにする</li> </ol><p> このため今回のフォルダ構成はちょっと変則的に以下のようにした。 </p> <pre><strong>${MINGW}/32</strong> : 32bit版 MinGW
<strong>${MINGW}/64</strong> : 64bit版 MinGW
<strong>${MINGW}/msys</strong> : MSYS (32bit版のみ)</pre>
<p>
<code>${MINGW}</code> は MinGW のインストール先フォルダを指す(今回フォルダのデリミタ文字を “<code>/</code>” としてるけど適当に読み替えてね)。
既定では <code>C:/MinGW</code> になっているはず。
MSYS では UNIX 系の shell 環境を提供している。
残念ながら MSYS は32bit版しかない。
</p><p>
事前に入れる必要のあるツールは特に無し。
開発に必要なほかのツール(<a href="http://nsis.sourceforge.net/Main_Page">NSIS</a> など)は後から入れても構わない。
後述するが, MSYS では fstab の書き換えで任意のフォルダをマウントできる。
強いて言うなら <a href="http://www.7-zip.org/">7-Zip</a> は入れておいたほうが良い(64bit版 MinGW は 7z 形式で書庫化されていることが多い)。
ていうか,少なくとも Windows では <a href="http://www.7-zip.org/">7-Zip</a> が最強なので,是非入れてほしい。
</p><p>
そうそう。
今回参考にしたのは以下のページ。
ありがとうございます。
</p><ul>
<li><a href="http://ascend4.org/Setting_up_a_MinGW-w64_build_environment">Setting up a MinGW-w64 build environment - ASCEND</a></li>
<li><a href="http://www.devlog.alt-area.org/?p=2802">MinGW (64bit) + MSYS 環境の構築 (1) | DeVlog - 銀の翼で翔べ -</a></li>
<li><a href="http://www.devlog.alt-area.org/?p=2900">MinGW (64bit) + MSYS 環境の構築 (2) | DeVlog - 銀の翼で翔べ -</a></li>
</ul>
<h3>mingw-get のインストール</h3>
<p>
mingw-get は MinGW のサイトからダウンロードする。
</p><ul>
<li><a href="">MinGW | Minimalist GNU for Windows</a>
<ul>
<li><a href="http://www.mingw.org/wiki/Getting_Started">Getting Started | MinGW</a> (このページは最初に読むべき。私でも読める程度の英語なので大丈夫)</li>
<li><a href="http://sourceforge.net/projects/mingw/files/">Download</a></li>
</ul></li>
</ul><p>
ダウンロードページにある mingw-get-setup.exe をダウンロードすればOK。
</p><p>
mingw-get は MinGW 用のパッケージ管理ソフトで apt-get の MinGW 版だと思っていただいて差し支えない。
残念ながら64bit版にはない。
</p><p>
インストールの際は若干の修正が必要。
</p><p>
まず mingw-get-setup.exe を起動すると以下の画面が現れる。
</p><div class="center">
<iframe src="https://www.flickr.com/photos/spiegel/14493199013/player/" width="500" height="279" frameborder="0" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen="" oallowfullscreen="" msallowfullscreen=""></iframe>
</div><p>
ポイントは “Installation Directory” の指定と “graphical user interface ” のチェックを外すこと。
GUI はまだ荒削りな感じで使い勝手が良くない。
普通のインストールでも要らないくらいだ(笑)
</p><p>
で, mingw-get のインストールが完了したら以下のフォルダにある profile.xml を探し内容を変更する。
</p>
<pre class="brush:xml" title="${MINGW}/32/var/lib/mingw-get/data/profile.xml"><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<profile project="MinGW" application="mingw-get">
<repository uri="http://prdownloads.sourceforge.net/mingw/%F.xml.lzma?download"/>
<system-map id="default">
<sysroot subsystem="mingw32" path="%R" />
<sysroot subsystem="MSYS" path="%R/../msys" /> <!-- ここがオリジナルと違う -->
</system-map>
</profile></pre>
<p>
これで mingw-get で MSYS をインストールする準備が整った。
</p>
<h3>32bit版 MinGW / MSYS のインストール</h3>
<p>
ビルドを行うのに最低限必要なパッケージは以下のとおり。
</p><ul>
<li>msys-core</li>
<li>msys-base</li>
<li>msys-vim</li>
<li>msys-wget</li>
<li>msys-patch</li>
<li>msys-flex</li>
<li>msys-bison</li>
<li>msys-binutils</li>
<li>mingw32-base</li>
<li>mingw-developer-toolkit</li>
</ul><p>
これらを mingw-get を使ってまとめてインストールする。
</p>
<pre class="brush:bash gutter:false" title="コマンド プロンプト">> cd c:\mingw\32\bin
> mingw-get install msys-core msys-base msys-vim msys-wget msys-patch msys-flex msys-bison msys-binutils mingw32-base mingw-developer-toolkit</pre>
<p>
これで32bit版のインストールは完了。
</p>
<h3>fstab の編集</h3>
<p>
MSYS を起動する前に fstab を設定する。
<code>${MINGW}/msys/etc/fstab</code> ファイルを作成し,以下のように記述する。
</p>
<pre class="brush:plain" title="${MINGW}/msys/etc/fstab">c:/mingw/32 /mingw</pre>
<p>
これで MSYS の shell 上では MinGW をインストールしたフォルダを <code>/mingw</code> にマウントできる。
他に入れたいものがあれば同様にマウントし,必要であればパスを通せば良い。
64bit版 MinGW も
</p>
<pre class="brush:plain" title="${MINGW}/msys/etc/fstab">c:/mingw/64 /mingw</pre>
<p>
とすれば良い。
</p><p>
ここまでくればみなさんピンとくるだろうが, fstab を切り替えれば32bitと64bitの環境を切り替えて使えるようになる。
MSYS の shell を起動するには <code>${MINGW}/msys/msys.bat</code> を起動する。
したがって <code>msys.bat</code> に環境を切り替えるオプションを追加記述すればいいわけだ。
</p>
<h3>zlib および libbz2 のインストール</h3>
<p>
32bit版の MinGW のインストールは以上だが, pgpdump をビルドするには zlib および libbz2 も必要。
なので mingw-get でこれらも同様にインストールする。
</p>
<pre class="brush:bash gutter:false" title="コマンド プロンプト">> mingw-get install mingw32-bzip2 libz</pre>
<p>
実は libz は最初のインストールで標準で入れられているのだが,何故か gcc が認識してくれない。
上のコマンドを実行すると <code>/mingw/include</code> および <code>/mingw/lib</code> にファイルがセットされるのだが,実は既に <code>/mingw/mingw32</code> に libz が入っていて, gcc は <code>/mingw/mingw32/include</code> を認識してくれないのだ。
しかもリンカの方は <code>/mingw/mingw32/lib</code> 内の libz.a や libz.dll.a を認識してくれやがる。
なんだかなぁ。
</p><p>
そうそう, MinGW においては *.a より *.dll.a が優先的にリンクされる。
依存する DLL があると何かと邪魔なので, *.dll.a はリネーム(または思い切って削除)した方がいい。
もちろん <code>/mingw/mingw32/lib</code> 内の *.dll.a もお忘れなく。
</p>
<h3>pgpdump のビルド(32bit版)</h3>
<p>
pgpdump のリポジトリは以下にある。
</p><ul>
<li><a href="https://github.com/kazu-yamamoto/pgpdump">kazu-yamamoto/pgpdump</a></li>
</ul><p>
まぁビルドの確認をするだけなので作者のリポジトリから直接ローカルに clone してもいいのだが,ここは GitHub のお作法に則って,いったん<a href="https://github.com/spiegel-im-spiegel/pgpdump">私のスペースに fork</a> して,それからローカルに clone した。
ビルド作業中にソースを変更するハメになると拙いので,念のため branch も切っておく(まぁ実は必要なかったのだが)。
</p><p>
で,MSYS のshell からローカルのフォルダに入って make する。
</p>
<pre class="brush:bash gutter:false" title="bash">$ cd /proj/pgpdump/pgpdump
$ ./configure -prefix=/mingw
$ make
$ strip pgpdump.exe</pre>
<p>
make ではCコンパイラを gcc ではなく cc で呼ぼうとするが, MinGW では gcc と cc は同じものなので気にしなくてよい。
気になるようなら <code>~/.profile</code> または <code>/etc/profile</code> に環境変数を設定するか
</p>
<pre class="brush:bash gutter:false" title="bash">$ make CC=gcc</pre>
<p>
とすればよい。
</p><p>
ちなみに
</p>
<pre class="brush:bash gutter:false" title="bash">$ make archive</pre>
<p>
とすると, git の archive コマンドを使ってパッケージングしてくれる。
なるほど, git のアーカイブコマンドってこうやって使うのか。
</p>
<h3>64bit版 MinGW のインストール</h3>
<p>
64bit版 MinGW は本家 MinGW から fork したプロジェクトだ。
で,今のところ大きく2つのプロジェクトがある。
</p><ul>
<li><a href="http://mingw-w64.sourceforge.net/">Mingw-w64 - GCC for both 64 & 32 bits Windows</a></li>
<li><a href="http://tdm-gcc.tdragon.net/">TDM-GCC</a></li>
</ul><p>
どちらも専用のインストーラがあるので好きな方を使えばいいのだが,今回は MinGW-w64 を使用することにした。
MinGW-w64 の場合,例外ハンドリングに SEH (Structured Exception Handling)が使えるというメリットがある。
</p><div class="center">
<iframe src="https://www.flickr.com/photos/spiegel/14286972000/player/" width="500" height="367" frameborder="0" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen="" oallowfullscreen="" msallowfullscreen=""></iframe>
</div><ul>
<li><a href="http://qt-labs.jp/2013/05/why-qt5-is-slow-on-windows.html">Windows で Qt5 が遅いわけ | Qt のあれこれ (仮)</a></li>
</ul><p>
MinGW-w64 のインストーラは<a href="http://mingw-w64.sourceforge.net/download.php">ダウンロードページ</a>の “Mingw-builds project - native toolchains using trunk” から取得できる。
</p><div class="center">
<iframe src="https://www.flickr.com/photos/spiegel/14287200157/player/" width="500" height="307" frameborder="0" allowfullscreen="" webkitallowfullscreen="" mozallowfullscreen="" oallowfullscreen="" msallowfullscreen=""></iframe>
</div><p>
64bit版にも libbz2 がない。
ないので,ソースを取ってきてビルドするしかない。
</p><ul>
<li><a href="http://www.bzip.org/">bzip2</a>
<ul>
<li><a href="http://www.bzip.org/downloads.html">Download</a></li>
</ul></li>
</ul><p>
このソースコードは MinGW に対応していないが,以下のページを参考に bzlib.h を修正すれば良い。
</p><ul>
<li><a href="http://go.kblog.us/2013/03/to-build-gd-library-2033-with-cygwin.html">Kblog: To Build GD library 2.0.33 with Cygwin / MinGW-w64</a></li>
</ul>
<p></p>
<h3>pgpdump のビルド(64bit版)</h3>
<p>
64bit版もやり方はは同じ。
問題なし。
</p>
<h3>MinGW-w64 のパス設定</h3>
<p>
32bit版も微妙におかしかったが MinGW-w64 は更におかしい。
</p>
<pre class="brush:bash gutter:false" title="bash">$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=C://mingw/64/mingw64/bin/../libexec/gcc/x86_64-w64-mingw3
2/4.9.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-4.9.0/configure --host=x86_64-w64-mingw32 --bu
ild=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysr
oot=/home/nixman/mingw-gcc-4.9.0/x86_64-490-posix-seh-rt_v3-rev2/mingw64 --with-
gxx-include-dir=/mingw64/x86_64-w64-mingw32/include/c++ --enable-shared --enable
-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto
--enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-li
batomic --enable-libitm --enable-lto --enable-graphite --enable-checking=release
--enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-
isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disabl
e-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --
disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --wit
h-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/h
ome/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/
home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-mingw32-static --with-mpc=/
home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-mingw32-static --with-isl=/
home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-mingw32-static --with-cloog
=/home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-mingw32-static --enable-c
loog-backend=isl --with-pkgversion='x86_64-posix-seh-rev2, Built by MinGW-W64 pr
oject' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe
-I/home/nixman/mingw-gcc-4.9.0/x86_64-490-posix-seh-rt_v3-rev2/mingw64/opt/incl
ude -I/home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-zlib-static/include -I/h
ome/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-mingw32-static/include' CXXF
LAGS='-O2 -pipe -I/home/nixman/mingw-gcc-4.9.0/x86_64-490-posix-seh-rt_v3-rev2/m
ingw64/opt/include -I/home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-zlib-stat
ic/include -I/home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-mingw32-stati
c/include' CPPFLAGS= LDFLAGS='-pipe -L/home/nixman/mingw-gcc-4.9.0/x86_64-490-po
six-seh-rt_v3-rev2/mingw64/opt/lib -L/home/nixman/mingw-gcc-4.9.0/prerequisites/
x86_64-zlib-static/lib -L/home/nixman/mingw-gcc-4.9.0/prerequisites/x86_64-w64-m
ingw32-static/lib'
Thread model: posix
gcc version 4.9.0 (x86_64-posix-seh-rev2, Built by MinGW-W64 project)</pre>
<p>
「誰やねん! nixman」って gcc にツッコミ入れちゃったよ。
まぁこの辺はこれから解消されるのかもしれない。
</p>
<h3>継続調査項目</h3>
<p>
まぁとりあえずビルドは通ったわけだが,ちょっとアレな感じが拭えないので,以下を継続して調べてみることにする。
</p><ol>
<li><a href="http://tdm-gcc.tdragon.net/">TDM-GCC</a> についても調べる</li>
<li>パッケージ管理ツール <a href="http://win-builds.org/download.html">yypkg-1.4.0.exe</a> について調べる(でもこいつ MSYS を汚すんだよなぁ)</li>
<li>mintty について調べる(参考: <a href="http://dogwood.skr.jp/blog/2013/11/406/">MinGW の mintty で対話モード、ついでに vim 設定 | ユニマージュ</a>)</li>
<li><a href="http://slashdot.jp/journal/582520/PGPdump">MinGW クロス環境</a></li>
</ol><p>
まぁでも, MinGW であまりゴリゴリやる気はない。
MinGW の真価は Linux 等で Windows のクロス環境が使える! ことに限る。
Windows 上の動作はあくまでオマケなのだ。
UNIX 系の環境が(Windows 上で)欲しければ仮想環境を組むか Cygwin を使うほうが合理的だからだ。
まぁでも Free (自由)な環境を確保しておくことも大事なので。
</p><p>
次回があるかどうかは分からない。
</p>
<div class="hreview"><a class="item url" href="https://www.amazon.co.jp/exec/obidos/ASIN/4789833402/baldandersinf-22/"><img src="https://images-fe.ssl-images-amazon.com/images/I/51bedlO2xmL._SL160_.jpg" alt="photo" class="photo"/></a><dl><dt class="fn"><a class="item url" href="https://www.amazon.co.jp/exec/obidos/ASIN/4789833402/baldandersinf-22/">実例で学ぶGCCの本格的活用法―高機能コンパイラのオプション・コマンドを一つ一つていねいに解説 (TECHI―Embedded Software)</a></dt><dd>岸 哲夫 </dd><dd>CQ出版 2006-07</dd></dl><p class="similar"><a href="https://www.amazon.co.jp/exec/obidos/ASIN/4789849961/baldandersinf-22/" target="_top"><img src="https://images-fe.ssl-images-amazon.com/images/P/4789849961.09._SCTHUMBZZZ_.jpg" alt="GDBを使った実践的デバッグ手法―Emacs,Eclipse,Cygwin,Insi (Interface増刊)"/></a> <a href="https://www.amazon.co.jp/exec/obidos/ASIN/4873112699/baldandersinf-22/" target="_top"><img src="https://images-fe.ssl-images-amazon.com/images/P/4873112699.09._SCTHUMBZZZ_.jpg" alt="GNU Make 第3版"/></a> <a href="https://www.amazon.co.jp/exec/obidos/ASIN/4873114063/baldandersinf-22/" target="_top"><img src="https://images-fe.ssl-images-amazon.com/images/P/4873114063.09._SCTHUMBZZZ_.jpg" alt="実践 デバッグ技法 ―GDB、DDD、Eclipseによるデバッギング"/></a> <a href="https://www.amazon.co.jp/exec/obidos/ASIN/4789838072/baldandersinf-22/" target="_top"><img src="https://images-fe.ssl-images-amazon.com/images/P/4789838072.09._SCTHUMBZZZ_.jpg" alt="リンカ・ローダ実践開発テクニック―実行ファイルを作成するために必須の技術 (COMPUTER TECHNOLOGY)"/></a> <a href="https://www.amazon.co.jp/exec/obidos/ASIN/4789849910/baldandersinf-22/" target="_top"><img src="https://images-fe.ssl-images-amazon.com/images/P/4789849910.09._SCTHUMBZZZ_.jpg" alt="起動プログラム ブート・ローダ入門─クロックの初期化や外部メモリの設定からOSの起動まで TECH I シリーズ (TECH Iシリーズ)"/></a> </p>
<p class="gtools">reviewed by <a href="#me" class="reviewer">Spiegel</a> on <abbr class="dtreviewed" title="2014-06-22">2014/06/22</abbr> (powered by <a href="http://www.goodpic.com/mt/aws/index.html">G-Tools</a>)</p>
</div>
<p>
6/22 追記:
</p><p>
<a href="https://baldanders.info/spiegel/pgpdump/">バイナリをいつものところにおいてある</a>。
</p>
MinGW/MSYS をインストールする
tag:Baldanders.info,2006-07-13:/blog/000209/
2006-07-13T12:34:38+00:00
2006-07-13T12:34:38+00:00
MinGW/MSYS をインストールする
Spiegel
/profile/
<p>
この記事では <a href="http://www.mingw.org/">MinGW (Minimalist GNU for Windows)および MSYS (Minimal SYStem)</a>のインストールについて紹介します。
<a href="http://www.mingw.org/">MinGW および MSYS</a> は Windows プラットフォーム上で動作する GNU ツールキットです。
GCC (GNU Compiler Collection)をはじめとするプログラミングに必要な各種ツールが集められています。
<a href="http://www.mingw.org/">MinGW/MSYS</a> は全てフリーで提供されていて,
ユーザは自由に利用することができます。
同様のものとしては Cygwin がありますが,
Cygwin で作成したプログラムが POSIX 互換のランタイムライブラリ上で動作するのに対し,
MinGW で作成したプログラムは完全に Win32API 上で動作させることが可能です。
従って UNIX 系のプログラムの移植の際には完全な互換が取れない場合があります。
</p>
<div id="a000209more"><div id="more">
<p>
まず MinGW のインストールからはじめましょう。
昔と違い今は MinGW のインストールはずいぶん簡単になりました。
<a href="http://www.mingw.org/">MinGW のサイト</a>からインストーラをダウンロードします。
現時点の最新版は 5.0.3 (Candidate Version)です。
</p><ul>
<li><a href="http://prdownloads.sf.net/mingw/MinGW-5.0.3.exe?download">MinGW-5.0.3.exe</a></li>
</ul><p>
インストーラを起動したらウィザードに従って必要なモジュールのダウンロードとインストールを行います。
詳しい操作については<a href="http://www2.atwiki.jp/ccw/pages/5.html">「C-Compiler Wiki MinGW / インストール」</a>が参考になります。
ウィザードの途中で設定するオプションはそれぞれ好みで決めていいと思いますが,
ここでは以下のように指定することにします。
</p><blockquote><table>
<tbody><tr><td style="text-align:right;white-space:nowrap;">Install or just download files? :</td><td style="text-align:left;white-space:nowrap;">Download and install</td></tr>
<tr><td style="text-align:right;white-space:nowrap;">Whitch MinGW package do you wish to install? :</td><td style="text-align:left;white-space:nowrap;">Current</td></tr>
<tr><td style="text-align:right;white-space:nowrap;">Check the components :</td><td style="text-align:left;white-space:nowrap;">"Minimal" + "g++ compiler"</td></tr>
<tr><td style="text-align:right;white-space:nowrap;">Destination Folder :</td><td style="text-align:left;white-space:nowrap;">C:\MinGW</td></tr>
</tbody></table></blockquote><p>
MinGW インストール完了後,
必要に応じて以下のモジュールも追加しておくといいかもしれません。
</p><ul>
<li><a href="http://prdownloads.sourceforge.net/mingw/mingw-utils-0.3.tar.gz?download">mingw-utils-0.3.tar.gz</a> -- ファイル変換ツール等</li>
<li><a href="http://prdownloads.sourceforge.net/mingw/libiconv-1.8.0-2003.02.01-1.exe?download">libiconv-1.8.0-2003.02.01-1.exe</a> -- 文字コード変換ライブラリ</li>
<li><a href="http://prdownloads.sourceforge.net/mingw/gettext-0.11.5-2003.02.01-1.exe?download">gettext-0.11.5-2003.02.01-1.exe</a> -- 多言語対応ソフトウェア用ライブラリ</li>
</ul><p>
次は MSYS です。
<a href="http://www.mingw.org/">MinGW のダウンロードページ</a>から最新版のインストーラをダウンロードします。
現時点の最新版は以下のファイルです。
</p><ul>
<li><a href="http://prdownloads.sf.net/mingw/MSYS-1.0.11-2004.04.30-1.exe?download">MSYS-1.0.11-2004.04.30-1.exe</a></li>
</ul><p>
インストーラを起動したらウィザードに従ってインストールを行います。
詳しい操作については同じく<a href="http://www2.atwiki.jp/ccw/pages/5.html">「C-Compiler Wiki MinGW / インストール」</a>が参考になります。
インストール先は「C:\msys\1.0」としておきましょう。
最後に MinGW のインストール先ディレクトリを問い合わせてきます。
間違えないようにしてください。
先ほどの設定であれば「c:/MinGW」と入力すれば大丈夫です。
</p><p>
MSYS インストール完了後,
更に開発用のツール群 msysDTK をインストールします。
以下のファイルを順に適用してください。
</p><ol>
<li><a href="http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download">msysDTK-1.0.1.exe</a></li>
<li><a href="http://prdownloads.sf.net/mingw/bison-2.0-MSYS.tar.gz?download">bison-2.0-MSYS.tar.gz</a></li>
<li><a href="http://prdownloads.sf.net/mingw/msys-autoconf-2.59.tar.bz2?download">msys-autoconf-2.59.tar.bz2</a></li>
<li><a href="http://prdownloads.sf.net/mingw/msys-automake-1.8.2.tar.bz2?download">msys-automake-1.8.2.tar.bz2</a></li>
<li><a href="http://prdownloads.sf.net/mingw/msys-libtool-1.5.tar.bz2?download">msys-libtool-1.5.tar.bz2</a></li>
<li><a href="http://prdownloads.sf.net/mingw/bash-2.05b-MSYS.tar.bz2?download">bash-2.05b-MSYS.tar.bz2</a></li>
<li><a href="http://prdownloads.sf.net/mingw/tar-1.13.19-MSYS-2005.06.08.tar.bz2?download">tar-1.13.19-MSYS-2005.06.08.tar.bz2</a></li>
</ol><p>
デバッガ(gdb)が必要な方は以下のファイルをダウンロードしてインストールしてください。
</p><ul>
<li><a href="http://prdownloads.sf.net/mingw/gdb-6.3-2.exe?download">gdb-6.3-2.exe</a></li>
</ul><p>
MSYS のインストールが完了するとデスクトップに MSYS のアイコンが作成されます。
このアイコンをクリックするとシェルが起動します。
起動直後のディレクトリは MSYS のホームディレクトリになっています。
(<em>usename</em> は現在ログインしているユーザ名です)
</p><blockquote><table>
<tbody><tr><td style="text-align:right;white-space:nowrap;">MSYS のホームディレクトリ :</td><td style="text-align:left;white-space:nowrap;">/home/<em>usename</em></td></tr>
<tr><td style="text-align:right;white-space:nowrap;">実際のフォルダ :</td><td style="text-align:left;white-space:nowrap;">C:\msys\1.0\home\<em>usename</em></td></tr>
</tbody></table></blockquote><p>
このシェル上で作業してもいいのですが,
コマンドを起動するだけなら Windows のコマンドプロンプトからでも可能です。
コマンドプロンプトを利用するには環境設定が必要です。
例えば以下のように設定します。
</p>
<blockquote><pre><code>PATH=C:\msys\1.0\bin;C:\MinGW\bin;...</code></pre></blockquote>
<p>
実際の設定方法については<a href="http://www2.atwiki.jp/ccw/pages/8.html">「C-Compiler Wiki Misc / 環境変数の設定」</a>が参考になります。
</p><p>
では動作確認を兼ねて <a href="http://www.zlib.net/">zlib</a> および <a href="http://www.bzip.org/">bzip2</a> をビルド&インストールしてみましょう。
現時点で zlib の最新版は 1.2.3,
bzip2 の最新版は 1.0.3 です。
</p><p>
まず zlib のソースコード一式を C:\msys\1.0\home\<em>usename</em> に展開します。
先ほどの MSYS シェルを起動し,
以下の手順でビルド&インストールを行います。
</p>
<blockquote><pre><code>$ cd ~/zlib-1.2.3/
$ ./configure
$ make install prefix=/mingw</code></pre></blockquote>
<p>
これで zlib ライブラリのビルドとインストールが完了します。
該当ファイルがちゃんとコピーされているかどうか C:\MinGW\include や C:\MinGW\lib をチェックしてみてください。
</p><p>
bzip2 も同じようにソースコード一式を展開します。
ただし bzip2 のソースコードでは MinGW でビルドすることを考慮していないため若干の修正が必要になります。
修正内容を抜き出したパッチファイル <a href="https://baldanders.info/spiegel/archive/bzip2-1.0.3.diff">bzip2-1.0.3.diff</a> を用意しましたので,
このファイルを使ってパッチを当ててからビルドを行います。
bzip2-1.0.3.diff をソースコードを展開した bzip2-1.0.3 ディレクトリにコピーし,
以下の手順でビルド&インストールを行います。
</p>
<blockquote><pre><code>$ cd ~/bzip2-1.0.3/
$ patch < bzip2-1.0.3.diff
$ make install PREFIX=/mingw</code></pre></blockquote>
<p>
うまくいきましたでしょうか。
該当ファイルがちゃんとコピーされているかどうか C:\MinGW\include や C:\MinGW\lib をチェックしてみてください。
bzpi2 では configure は不要です。
また make 時のパラメータが zlib と異なっていますので注意してください。
ビルドでは bzip2.exe と bzip2recover.exe が生成されますが /mingw/bin にコピーする際に拡張子が削除されてしまいます。
これらのバイナリを使う際には拡張子を元に戻しておいてください。
strip コマンドでサイズを小さくするのもいいでしょう。
</p>
<blockquote><pre><code>$ cd /mingw/bin
$ mv bzip2 bzip2.exe
$ strip bzip2.exe
$ mv bzip2recover bzip2recover.exe
$ strip bzip2recover.exe</code></pre></blockquote>
<p>
いかがでしたでしょうか。
このように MinGW/MSYS を使って UNIX 系のコマンドを比較的簡単に Windows プラットフォームに移植することができます。
</p>
</div></div>