Win32 フリー開発環境
(2000/1/11〜)
トップページへ
長い間、Windows95/98/NT (以下 Win32) では、GUI アプリケーションも記述可能な、フリーな C コンパイラは存在しないものと思っていましたが、Linux 関連のリンクを辿るうち、Windows のクロス開発環境の存在に気づき、更には GNU C/C++ や LCC が Win32 環境に移植され、公開されていることが判りました。掲示板で、自分が入手した情報を書いていましたが、ログの消滅が怖いので (^^;) 、このページに書き留めておくことにします。
一口に開発環境といってもいろいろありますが、ここでは特に C/C++ 言語と、その周辺ツールに焦点をあてていきたいと思います。C/C++ は、今では昔のアセンブラのような位置付けになっていて、かなりハードウエアに近い、低レベル言語のひとつであるといえます。昨今では特に GUI 環境に特化した優れたプログラミング言語が多数公開されており、PC の高性能化もあって、C/C++ のようなタイプ量の多い、古い言語を使う必然性は、ほとんど無くなっているかもしれません。しかし、ドライバからアプリケーションまでという応用範囲の広さは、他の言語には代え難いものがあります。
GNU について
GNU については今更書くまでもないでしょうが、リンクだけ貼っておきます。http://www.gnu.org/home.ja.html
ここで紹介している C/C++ コンパイラで、4 つのうち 2 つが GNU C/C++ コンパイラ (GCC) がベースになっています。http://www.gnu.org/software/gcc/gcc.html
Borland C++ Compiler 5.5 日本語版 (http://www.borland.co.jp/cppbuilder/freecompiler/)
Borland C++ Compiler 5.5 (http://www.borland.com/bcppbuilder/freecompiler/)
Win32 用としてのフリー C++ コンパイラの大本命登場です !! コンパイラ自体はオープンソースではないものの、市販されているパッケージに含まれているものと同等のようです。さすがに統合開発環境 (IDE) は付属しないものの、製品として熟れているコンパイラだけに、安定感はピカイチ。特に、他のフリーのコンパイラで不安が残るリソース・コンパイラも、当然問題なし。他のコンパイラで問題となる、シフト JIS 漢字に関しても全く問題なく使えます。ということで、Win32 用のフリーの C/C++ コンパイラが欲しい方は、まずこれを使いましょう (^^) 。
尚、IDE には、後述の V IDE が使えるようです。2000 年 4 月 21 日付の、すなふ さんからの情報で、コンパイル済の vgui-bcc124b.exe を使う必要があるとのこと。以下は、すなふ さんの書き込みです。情報提供、ありがとうございました!
BCC5.5対応のVIDE 投稿者:すなふ 投稿日:04月21日(金)07時45分39秒
32フリー開発環境のVIDEについて v-1.24a.tar.gz だとBCC5.5に対応してないです。 私もTRYしたのですがDLL、LIBがエラーでMAKEできないんですよね。 どうにもならなくなって、 作者のBruce E. Wampler, Ph.D. にメイルしたら返事がきました。 やっぱりBCの古いバージョン専用だそうです。 それで、BCC5.5用のソースじゃなくて、DLL版をアップしてもらえました。 ftp://ftp.objectcentral.com/vgui-bcc124b.exe これをDLすれば、BCC5.5でVIDE/VGUIが使えます。 もちろん日本語版のBCC5.5も可能です。 インストール先のディレクトリは c:\Borland\BCC55 に入れてください。そうしないとVIDEのDLLがBCCの ディレクトリ中に入らないからです。 もうひとつ、注意点: Vide起動してから、Project→Edit→Pathで Include Pathは 2行自動生成されたら1行にしないとエラーが出てます。 VIDEを使った具体的プログラム作成法は、フリープログラミング倶楽部が参考 になりました。ここのコンパイラの設定をBorland BCC5.5にすれば対応できます。
因みにサイズは約 7.8MB あります。私は限定配布の無料 CD-ROM でゲットしました (^_^) 。今後は C マガジンなどにも添付されるようですから、そちらから入手される方が良いでしょう。
Cygwin (http://sourceware.cygnus.com/cygwin/)
最初に見つけたフリーな C/C++ コンパイラ及び開発環境です。GCC を中心に、UNIX ライク コマンド群が米 Cygnus Solutions 社の手により Win32 環境に移植されているものです。このプロジェクトの特徴は、UNIX 系 OS に存在して Win32 には存在しない API を、cygwin1.dll という名の DLL の形式で補完し、オリジナルの移植を容易にしているだけでなく、それを使用する開発環境も含めて UNIX ライクにしてしまおうというスタンスでしょう。C/C++ コンパイラを含めたコマンド群は、付属のシェル、bash 上での動作が前提になっているようです。bash というのは bsh や csh 同様、UNIX のシェルの一種で、Linux などでも標準的に使われています (シェルとは、Win32 で言えば COMMAND.COM または CMD.EXE だと言えば、想像がつくでしょうか。コマンドラインを解析して実行するプログラムのことです)。Win32 の MS-DOS プロンプトやエクスプローラ等からは直接使用できないと思われます (ひょっとして DLL にパスを通しておけばできるのかな?) が、コンパイル後の実行ファイルについては、後述の 2 つのコンパイラ同様、cygwin1.dll を必要としないものも生成できます。
最初はこれしか知らず、取り敢えず使ってみたのですが、現在はインストールしていません (^^;) 。Win32 の開発環境を出来るだけ UNIX のそれに近づけたい、という人にはお勧めですが、そういう方は、初めから Windows でなく、Linux や FreeBSD を使った方が手っ取り早い気がします (^^;;) 。標準の IDE はありませんが、UNIX 環境ではそれが当たり前ですから、特に問題はないでしょう。勿論、別途単独で配布されている、いくつかの IDE と組み合わせることもできると思います。
ダウンロードは、日本国内の各リングサイトからが便利です。ホームページから各ダウンロード ページを辿ってください。full.exe というファイル一つだけですが、2000/4/14 現在のバージョン (B20.1) で約 13.6MB あります。
インストールは、full.exe を実行して、指示に従うだけです。スタートメニューに bash を起動するメニューが追加されますので、そこから使用することになります。コンパイラドライバは gcc.exe です。gcc --help[Enter] とすると、簡単なオプションの説明が表示されます。gcc test.c[Enter] とすると、test.c がコンパイル、リンクされ、a.exe という実行ファイルができ上がります。test.exe という名前で出力したいときは、gcc -o test.exe test.c[Enter] です。これが一番簡単な使い方ですね。
Mingw32 (http://www.xraylith.wisc.edu/~khan/software/gnu-win32/)
前述の Cygwin の情報を入手している際に存在を知ったのが、この C/C++ コンパイラです。Cygwin では、UNIX ライクなシェル上での動作が前提なのに対し、こちらは Win32 の普通の MS-DOS プロンプトで使用できます。個人的に最も気に入っている、フリーな C/C++ コンパイラです。
コマンドラインのコンパイラと、make などの若干のツールのみが同梱され、IDE はありません。IDE が欲しい場合、後述の V IDE 等の、単独で配布されている IDE を使えば OK です。ツール類は、必要最低限のものしか同梱されておらず、cp 、rm 、touch など、makefile 中などで良く使われる UNIX コマンドは、探して追加しなくてはなりません。簡単なものなら練習のつもりで自分で組めば良いのですが、gzip などはそうもいかないので、V IDE と共に配布されているツール群 (winutils.zip) を追加すると良いでしょう。
2000/4/14 時点での最新版はここ (ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/gcc-2.95.2/) にあります。これ (gcc-2.95.2-msvcrt.exe) か、これ (gcc-2.95.2-crtdll.exe) をダウンロードしてください。インストールファイルが 2 種類あるのは、前者が Windows 95 OSR2 以降で OS に標準装備された、マイクロソフト製 C ライブラリ、MSVCRT.DLL を使用するのと、後者が無印 Windows 95 や Windows NT 3.51 等、全ての Win32 環境に存在する、古い C ライブラリ、CRTDLL.DLL (こちらも勿論マイクロソフト製) を使用する、という違いからです。実際は、比較的新しいアプリケーションをインストールすると、ほとんど全て MSVCRT.DLL もインストールされるため、いずれの Win32 環境でも、両者が同じように使えるはずです。前者が新しいライブラリを用いるため、僅かに高性能、後者は今までの Mingw32 環境での動作実績と、それぞれ特徴がありますが、どっちを選んでも実質的には何も差異はないでしょう (^^;) 。因みに私は後者を使っています。
インストールは、まず、いずれかの実行ファイルを起動して、インストール先フォルダを指定します。必要ファイルが全て展開されますので、後は、インストール先フォルダ\bin にパスを通して完了です。AUTOEXEC.BAT の末尾に、PATH=c:\gcc-2.95.2\bin;%PATH% とでも追加しておけばよいわけです (インストール先を c:\gcc-2.95.2 とした場合) 。この処理系も、コンパイラドライバは gcc.exe ですので、gcc --help[Enter] とすることで、簡単なオプションの説明が表示されます。
実は、前述の Cygwin/GCC も、後述の LCC-Win32 も同じなのですが、シフト JIS (MS漢字コード、と呼ぶのが正しいのかも・・・) を含むソースファイルと相性が悪く、漢字等が化ける時があります。日本国内で市販されている C/C++ コンパイラのほとんどは、ライブラリやコンパイラ本体がシフト JIS を正しく扱えるようになっているため、気にせず記述できるのですが、Mingw32 は当然英語等の SBCS 環境しか想定されていません。これは、シフトJIS の 2 バイト目に、'\' (アスキーコード 0x5c) が来る文字があり、C/C++ のエスケープシーケンスとして、その直後の文字との組み合わせと解釈されてしまうためです。下記のような簡単なフィルタを通してからコンパイルすれば、取り敢えず問題を回避できますが、
#include <stdio.h>
#include <stdlib.h>
#define iskanji(c) (((c)>0x080 && (c)<0x0a0)||((c)>0x0df && (c)<0x0fd))
int main()
{
int c;
while ((c = getchar()) != EOF) {
putchar(c);
if (iskanji(c)) {
c = getchar();
if (c == EOF)
break;
putchar(c);
if (c == '\\')
putchar(c);
}
}
return EXIT_SUCCESS;
}
※例えば上記を kpp.c として保存、コンパイルし、kpp.exe を作成。コマンドラインで、
kpp < オリジナル.c > 処理済み.c[Enter]
とする。
毎回このような作業を行うのは大変なので、コンパイラを構成する実行ファイルの一部に、組み込んでしまうのが一番使い易いです。具体例はこちら
(sjpp101.lzh) 。※
sjpp をインストールすると、何故か windres.exe
が使えなくなります (tacc
さん、報告ありがとうございました)。GUI
アプリケーションを作成する場合は、sjpp
をインストールしないでください。 (2001/7/8 追記)
※ 現在は MinGW で更新が続けられていますが、MinGW-1.1 Released では、sjpp と windres.exe
の組み合わせの問題は無くなっています (※注 この版では、cpp0.exe
を sjpp.exe と入れ替えます) 。 (2002/1/1 追記)
LCC-Win32 (http://www.cs.virginia.edu/~lcc-win32/)
最後に紹介するのは C コンパイラです。今どき珍しい (!?) 純粋な C コンパイラで、C++ は使えません。ベースが GCC ではなく、LCC というフリー C コンパイラを用いているためです。
C++ が実装されていないためか、コンパイラ本体が非常にコンパクトなのが特徴です。また、付属の IDE である、Wedit の完成度も高く、極めて使い易いものになっています。ダイアログの編集もビジュアルに行える、リソースエディタまで付属していますから、C++ にこだわらなければ、前述の二つよりも、こちらの方が遙かに敷居が低いでしょう。お勧めの C コンパイラです。
上記リンクから、lccwin32.exe だけダウンロードすれば取り敢えず、IDE も含めて一通りインストールできます。他のヘルプ等は必要に応じてダウンロードすればよいでしょう。2000/5/2 時点での最新版(2000/5/1版)で、約 2.5MB ありますが、これで IDE も含んでいますから、いかにコンパクトかがわかると思います。
因みに、本家 LCC のサイトはここ (http://www.cs.princeton.edu/software/lcc/) です。元来 ISO Standard C のため、Win32 API には対応していないものの、Windows 95/98/NT 用の最新 LCC の実行ファイルもあります。
V IDE (http://objectcentral.com/)
Windows で使用可能な、C++ 専用の IDE です。コンパイラは Cygwin か Mingw32 を用意します。C++ で構築する関係上、LCC-Win32 では使えません ( LCC-Win32 は自前の IDE があるので、そちらを使うべきでしょう ) 。Visual C++ や C++Builder などの商用コンパイラとの組み合わせでも使えます。
この IDE 、V の凄いところは、全ての Win32 対応 (古い版を入手すれば、Windows 3.1 も可 !) は勿論、Linux 上でも使用可能なところです。まだ試していませんが、この環境で作られたアプリケーションは、ほとんど再コンパイルだけで、各処理系に対応できるようです。OpenGL にも対応していて、簡単なサンプルも付属しています。また、この環境で作成されたプログラムは、フリーソフトは当然のこと、商利用も可能ということです。
ここで紹介しているコンパイラ同様、シフト JIS コードとの相性が悪いですが、IDE は勿論、ライブラリ、その他ツールを含め、全てソースコードでも提供されているため、その気になれば完全日本語版も作れるでしょう (^^;) 。因みに、IDE は V 自身で記述されています。
インストールですが、ここではソース アーカイブ (v-1.23.tar.gz)と、Mingw32 による方法を示します。Mingw32 や Cygwin 、Visual C++ 用は、バイナリでライブラリが供給されていますが、バイナリでなく、ソースからコンパイルするのは、バイナリでは使用するコンパイラにより互換性がないのと、Mingw32 のコンパイル、リンクの動作チェックにもなるからです (^^;) 。ソースからのインストールでは、他のコンパイラを使用する場合も、ほとんど同じ手順で良いはずです。尚、Mingw32 は既にインストール、実行できる状態になっているものとします。
まず、v-1.23.tar.gz をダウンロードし、LHMelt + TAR32.DLL などの解凍ツールを用いて、フォルダ付で適当なドライブに展開します。デフォルトでは C:\ に展開されることを前提としていますが、C ドライブの容量がキビシイ人は、必ず他のドライブに展開しましょう。インストール先のフォルダはルートのままで良いと思います。展開すると、v というフォルダができます。また、winutils.zip もダウンロードし、make.exe を除いた実行ファイルを、Mingw32 の bin フォルダなどの、パスの通ったフォルダにコピーしておきます。winutils.zip に含まれるツール群 (cp.exe 、rm.exe 等) を既に持っている場合は、ダウンロードの必要はありません。
次に、ヘッダ ファイルを Mingw32 の環境にコピーします。V を C:\ にインストールした場合、C:\v\gnuwin32\include\gl というフォルダと、C:\v\includew\v というフォルダに、コピーが必要なヘッダ ファイルが格納されています。これらをフォルダごと、Mingw32 の include フォルダにコピーします。Mingw32 が C:\gcc-2.95.2 にインストールされている場合は、C:\gcc-2.95.2\include\gl と、C:\gcc-2.95.2\include\v というフォルダができることになります。
次に、V を make するための定義ファイルを設定します。V をインストールしたフォルダの下に、Configs というフォルダがあると思います。この中の、CfgMing.mk というファイルを、Config.mk というファイル名で、V をインストールしたフォルダの直下にコピーします。既に Config.mk というファイルが存在しますが、上書きしてしまって構いません。V を C:\ にインストールした場合は、C:\v\Configs\CfgMing.mk というファイルを、C:\v\Config.mk というファイルに、上書きすることになります。
コピーが終了したら、この Config.mk を、テキストエディタで書き換えます。HOMEV = C:/v という行と、HOMEGNU = C:/mingw32 という行を探します。Ver1.23 では、28 行目と 31 行目にあります。前者は V 自身のフォルダを、後者は Mingw32 のフォルダを指定します。V を D:\ にインストールした場合は、HOMEV = D:/v とします。Mingw32 を C:\gcc-2.95.2 にインストールした場合は、HOMEGNU = C:/gcc-2.95.2 とします。V を C:\ に、Mingw32 を C:\mingw32 にインストールしてある場合に限り、書き換えの必要はありません。
ライブラリを構築します。V のフォルダの中の、srcwin というフォルダに移動して、make[Enter] とします。正しく Mingw32 及び v がインストールされていれば、コンパイル、リンクの表示の後、V のフォルダの下の lib というフォルダに、libV.a というファイルと、libVgl.a というファイルができているはずです。この二つが V のライブラリです。これらを、Mingw32 の lib フォルダにコピーします。
最後に、IDE を構築します。V のフォルダの下の、vide というフォルダに移動し、make[Enter] とします。make が成功すると、V のフォルダの bin の中に、vide.exe という実行ファイルが出来上がっているはずです。同様に、V のフォルダの下の、vgen というフォルダと、iconed というフォルダでも make します。やはり bin の中に、vgen.exe 、viconed.exe という実行ファイルが作られます。これらは、そのままでも使えますが、パスが通っているはずの、Mingw32 の bin にでもコピーしておくと良いでしょう。
以上で V のインストールは終了です。vide.exe が統合開発環境 (IDE) です。Toolsというメニューから、V App Gen を選択すると、vgen.exe が起動します。このプログラムでスケルトン (アプリケーション作成の骨格となるプログラム/プロジェクト) を作成することができます。同じく V Icon Editor を選択すると、viconed.exe が起動します。名前の通り、アイコンエディタです。
まずは、いろいろスケルトンを作って試してみてください (^^;) 。
※ 2000 年 5 月 2 日時点での最新は、v-1.24c.tar.gz です。近日中に上の文章も修正します。
Quincy 99 (http://www.midifitz.com/alstevens/quincy99/)
(調査中)
Visual Programming Armoury (http://www.polymorph.spb.ru/)
(調査中)
(2000/5/2)