gcc β20.1の話                   1999.May.5 そういえばgccの話をしてなかった。でも、最近のgccは以前より格段に使いやすく なってるからそんなに悩まなくて済む。 ファイル:  1. full.exe 14,247,216 byte ; toolやコンパイラ、*.hなど  2. (full-man_tar.bz2 1,621,324 byte ; マニュアル)  3. (gcc-20.1.faq-j.htm 153,992 byte ; FAQの日本語版)  4. (res2coff_tar.gz 15,353 byte ; .resから.oに変換するツール) Setup: full.exeを殆ど何も考えずに展開するとc:\cygnus以下にやはり鬼のようにファイルを Installしてくれる。が。環境設定をするためのバッチ、cygnus.batの中身が: @ECHO OFF SET MAKE_MODE=UNIX SET PATH=c:\CYGNUS\CYGWIN~1\H-I586~1\BIN;%PATH% bash  な、なんとこれだけ。C_INCLUDE_PATHとかCPLUS_INCLUDE_PATH、GCC_EXEC_PREFIX...  といった、これまで必要だった環境変数は一切不用!  (CとC++のコンソールプログラム、CのWin32プログラム、STLを使用したC++コンソール   プログラムにて確認済み)  だいたい、MAKE_MODE=UNIXってのはunixのmakefileをそのまま使う場合に必要な  設定であり、win32な(というかDOSの) makefileを使う場合は不用!!  これなら前みたいにc:\gccにまとめる、などという作業を行う必要もなし。  が、ちょっと罠があった。リンク時に-mno-cygwinオプションを付けないと純Win32  アプリにはならず、Cygwinのdllを使うアプリになってしまうのであった。  このことは3.に書いてあった。  また、windres.exeはやっぱりSDKのgenericサンプルのリソースをコンパイルでき  ないから4.が必要。  ところで、bz2という拡張子だが、これはbunzip2.exeで展開すればよいらしい。  なぜに「らしい」なのかというと、今のところ別に困ってないので2.を展開して  なかったりする(^^;;  さて。こんなものがある。  devcpp20.zip 8,242,356 byte ; Bloodshed Dev-C++ v1.99b3  FreeなC++コンパイラなのだが、これの実態はgccだったりする。そしてDelphiで  書かれたエディタからコンパイルまでできる。とはいえ、ちょっと統合環境と  呼べるようなものではないのがいまいち。  こいつをインストールして、gcc -vとやると、gcc version 2.8.1と出る。  gcc β20.1の方は、gcc version egcs-2.91.57 19980901 (egcs-1.1 release)  だ、そうな。何故、ここでこれを出すかというと、サイズをみてお分かりの  ようにfull.exeよりHDDに優しいのだ。そして最小インストールの場合、その  binディレクトリにはたった27個のファイルしかない。gccのbinには170個もの  ファイルがあるというのに!  Dev-C++はunixのプログラムをbash環境でWin32に移植しよう。という考えはなく、  Win32のC/C++コンパイラであるから当然、bash環境をWin32上であたかもunixの  ように使える必要はまったくない。  それはつまり、コンパイルに必要なGNUツールのみが入っているはずだ。という  仮定につながる。ではDev-C++が展開したbin内のファイルを紹介してみると: 149504 Jan 20 1998 addr2line.exe デバッグ関連? 148992 Jan 20 1998 ar.exe ライブラリアンだと思う? 268800 Jan 20 1998 as.exe アセンブラ。gccから自動で呼び出される 22528 Jan 20 1998 c++filt.exe 49152 Mar 8 1998 cc.exe *1 1156096 Mar 8 1998 cc1.exe *2 Cのコンパイラの一部だと思う 1214976 Mar 8 1998 cc1obj.exe *3 Objective-Cのコンパイラの一部だと思う 1528320 Mar 8 1998 cc1plus.exe *2 C++のコンパイラの一部だと思う 78336 Mar 8 1998 cpp.exe *2 Cのプリプロセッサだと思う 175104 Jan 20 1998 dlltool.exe DLLを作る時に必要? 50688 Mar 8 1998 g++.exe g++コンパイラ 37376 Jan 20 1998 gasp.exe アセンブラのプリプロセッサ 49152 Mar 8 1998 gcc.exe C/C++ Compiler 13312 Mar 8 1998 gcov.exe 849408 Aug 10 1998 gdb.exe デバッガ 268800 Jan 20 1998 ld.exe リンカ。gccから自動で呼び出される 53248 Mar 8 1998 libobjc.dll *3 156672 Jan 20 1998 nm.exe デバッグシンボルをどーにかするもん? 254976 Jan 20 1998 objcopy.exe 286208 Jan 20 1998 objdump.exe バイナリから各種情報を得るツール 27648 Mar 8 1998 protoize.exe 148992 Jan 20 1998 ranlib.exe 135680 Jan 20 1998 size.exe 135168 Jan 20 1998 strings.exe バイナリファイルから文字列を抽出する 254976 Jan 20 1998 strip.exe デバッグ情報の.exeからの除去 24064 Mar 8 1998 unprotoize.exe 208384 Jan 20 1998 windres.exe リソースコンパイラ *1 20.1側にはない。通常、cc.exeはC Compilerだと思うからgcc.exeがあれば   いらないような? *2 20.1側は別ディレクトリに同じ名前のファイルがある *3 20.1側にはない。これはでも多分Objective-C用のものだと思う まぁその。各ファイルの目的に付いて付けた私のコメントはほんの2,3を除いて とってもいい加減な「直感」なので、信用してはいけません。 無知を笑われてしまうかもですけど。でもどーせ、その程度な人なので。私(^_;) ところで、Dev-C++ですけど、結局私はgcc β20.1にしました。 理由は、unix起源のコマンドが使いたいからです。 これは最近のLinuxブームの影響、でもないんです。例えばgrep。 DOSのfindはお馬鹿で、Win9xのスタートメニュー、検索->ファイルやフォルダが いかに面倒かはご存知では? で、うちのgrep.comのタイムスタンプは1988-08-23なんです。このgrepはunixのgrepの 真似です。 command.comなどという馬鹿なものを使っている限り、GUIの方が絶対に便利でしょうが、 実際はそうでもない。GUIの申し子であるマウスのボタンは幾つありますか? ではキーボードのボタン(キー)は幾つです? 勝負は目に見えてますね。(^^;; #あ、Dev-C++のURLをメモし忘れた。。。