のろのろとgcc 4.8.1を作ってみる(その5)

二日酔いで頭痛い中、色々と見直した結果、MinGW(32bit版)が「2013/6/2時点の最新」ではなかったことが判明。mingw-get-inst-20120426.exeのデフォルトのカタログを使っていた模様。
この中に含まれるgcc v4.6.2を使うと、libibertyを使用しなくても、ffs()のコンパイルが通ってしまう。外部シンボルにならないことから、gccがffs()をbuilt-inしていると推測される。
make -j4が必ずハングするのも、根っこは一緒なのかもしれない…でも、まだ未確認。アホみたいにフルメイク+make -jなしでテストしているので…

あれ?ひょっとして呪われてます?

見えない(書かない)ところで、色々やらかしちゃているので、MinGW環境をリセットして、gcc v4.8.1を作り直したら、makeの最中にisl/isl_map_simplify.cで使ってるffs()がないよ〜と怒られる。あっれ〜??
しかもmake -j4が、必ずハングするオマケ付き。ffsはlibibertyにあるでしょうよ!っと文句をブリブリ言いつつ、Makefileを読み直す…なんで前はコンパイル出来たんだろう??
まあいいや、明日はお休みだ。ゆっくり見直そう。

のろのろとgcc 4.8.1を作ってみる(その4)

はぁーやっぱりOSとか言語のコンパイルは疲れますね。コンパイル長いし、makeバグが潜んでるしで…。ともあれ、なんとか無事にgcc 4.8.1(32bit版)が出来たので、次のverか64bit化の為に記録を残しておきます。

※ここに書いてあるのは、gcc 4.6.2(多分それ以前)からgcc 4.8.1を生成する方法です。gcc 4.7.xに上げている場合は、2013/6/30の記事を読んでください。

開発環境

MinGW(32bit版)
2013/6/2時点の最新。mingw-get-inst-20120426.exe内蔵カタログファイルで指定されたMinGW/MSYSのバージョン環境(※2013/6/30訂正)。C、C++、MSYS Basic System、MinGW Developer Toolkitを選択してインストールしてある。
binutils
上記MinGW環境で必要要件は満たしているが、2013/6/23にbinutilsをv2.22からv2.23.2に入れ替えている。
Ada(GNAT)
Adaを作りたい/使いたい人だけ。MinGW Shell上から「which gnatmake」と実行し、コマンドが見つかれば、それでOK。見つからない人は、「mingw-get install gcc-ada-bin」と実行してください。
スレッドモデル
オリジナルのgccがwin32スレッドなので、そのままwin32スレッドで行きます。他の選択肢にはPOSIXスレッドがありますが、困ったときに考えます。

入手物

必要要件の詳細は、gccを展開したディレクトリの下のINSTALL/prerequisites.htmlを読んでください。

gcc v4.8.1
http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8.1.tar.bz2
GMP v5.1.2
http://ftp.gnu.org/gnu/gmp/gmp-5.1.2.tar.xz
MPFR v3.1.2
http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.xz
MPC v1.0.1
http://ftp.gnu.org/gnu/mpc/mpc-1.0.1.tar.gz
ISL v0.11.1
ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-0.11.1.tar.bz2
CLooG v0.18.0
ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-0.18.0.tar.gz
zlib v1.2.8
http://www.zlib.net/ から http://prdownloads.sourceforge.net/libpng/zlib-1.2.8.tar.xz?download
gcc v4.8.1にzlib v1.2.7が入っているので、本当は必要ないけれども、v1.2.8でバグ修正が入っているので念のため。
libiconv v1.14
http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz
必要要件に入っていないけれども必要

gnu直リンだからgnuな人に怒られそうだな〜ってあれ?pplが要らなくなっちゃいましたね。

続きを読む

停電食らいました

日付を跨いだので昨日になりますが、夕方に短い停電がありました。PCその他諸々はUPSに守られているので、痛くも痒くもありませんが、バッテリーバックアップされていない家電は時刻表示が点滅 orz 結構萎える。
炊飯器とかお風呂とか浴槽乾燥機とかとか。誰か電波時計付けてくれませんかね?
まぁ一番付けて欲しいのはデジカメにだけどね。バッテリー上がってるの気がつかずに時刻リセット。そのまま無視すると、後の管理が面倒だし。GPSとかWiFiとか要らんから、電波時計つけてプリーズ!デジカメ屋さん

のろのろとgcc 4.8.1を作ってみる(その3)

どうやらAda君はi386,i486を見捨てた様だ。他のC,C++,Fortran,OBJC,OBJ-C++i386をサポートしているのにorz
ドキュメントには、それらしいことは書いてないのだが、FAQで「i686で作ってみれば?」とかアバウトな情報を見つけた。(でも根拠が書いてなし、ドキュメントにも触れられていない…)
今、WinGWがサポートしている全言語をi586コンパイルしている最中。情報をまとめるのは、その4になりそうです(T-T)

のろのろとgcc 4.8.1を作ってみる(その2)

configureを見直したり、ソースを弄ったりして、それなりにCとC++はできあがったのだが、Ada君がいかん。予想だにしなかったところでエラーを吐く。当初は複数の言語を同時にコンパイルしていたので、分かりにくかったが、どうやらAda君が悪さをしていたらしい。
CygwinwだけでMinGWを忘れている箇所を探している間に、makeがエラー終了しているのには参った…
あとは、Ada、Fortran、objc、objc-c++ …長い道のりだなぁ。

のろのろとgcc 4.8.1を作ってみる

4.7の構造と微妙に違うなぁと思いつつ、ぼちらぼちらとmakeをしてみる。しかし、1ターン3時間なのでbinutilsと違いのんびりだ。エラーが出ても暫く気がつかない。んー何だかな。
ちょっと違う話だが、セキュリティソフトにESET Smart Security5を使っているのだが、コンパイル中にconftestがトロイの木馬だと言われて隔離されてしまう。conftestは、そのシステムが要求する機能や関数を持っているかどうかを、調べるための中間ファイルなので、トロイの木馬ではないのだが、バイナリのどこかが一致してしまう様だ。なんて面倒な奴なんだ…このディレクトリの配下は信用できると定義したいぞ!