作成日: 2010/07/18

COINS で hello.c をコンパイルしてみる

概要

COINSコンパイラ・インフラストラクチャ を使って、hello.c をコンパイルしてみます。

環境が Windows XP なので、本来なら Cygwin を入れるべきなのだけれど、Cygwin を入れずに動かしてみました。
が、素直に Cygwin 入れた方が良かったかも。。。

なお、sourceforge からダウンロードした COINS はビルドせずにそのまま使っています。
ビルドする場合は、以下の作業では足りません。そもそも Cygwin 無しに COINS をビルドできるかどうか不明です。素直に Cygwin を入れた方がよさげです。。。

ダウンロード

まず、以下のものをダウンロードします。URL およびファイル名はダウンロード時点 (2010/07 現在) のものです。

JDK JDK 6 Update 21 のインストールと設定

jdk-6u21-windows-i586.exe を起動してインストールします。
ここでは、「C:\Bin\jdk1.6.0_21」にインストールしました。

インストール後に、システム環境変数に以下の値を設定します。

  • JAVA_HOME: C:\Bin\jdk1.6.0_21
  • PATH: %JAVA_HOME%\bin を追加
COINS の展開

coins-1.4.4.4-ja.jar を展開します。
ここでは、「C:\Bin\coins-1.4.4.4-ja」に展開しました。

Minimalist GNU for Windows (MinGW) のインストールと設定

MinGW-5.1.6.exe を起動してインストールします。
インストールオプションで、「Download and install」を選び、 インストール対象として、以下を選びました。

  • MinGW base tools
  • g++ compiler

ここでは、「C:\Bin\MinGW」にインストールしました。

インストール後に、システム環境変数に以下の値を設定します。

  • PATH: C:\Bin\MinGW\bin を追加
コンパイル用のラッパバッチファイルの作成

以下の内容をエディタで編集し、compile.bat として適当なディレクトリに保存します。
※「-D_MT -U__MSVCRT__」は、hello.c をコンパイルしたときに、stdio.h のインクルードで問題になったので、その場しのぎで追加しました。 きちんとした解決方法は見つけていません。そのため、インクルードファイルが変わると変更する必要があると思われます。

@echo off

setlocal

set COINS_HOME=C:\Bin\coins-1.4.4.4-ja
set GCC_HOME=C:\Bin\MinGW

java -classpath %COINS_HOME%\classes coins.driver.Driver -D_MT -U__MSVCRT__ -I%GCC_HOME%\include -o %1 -coins:target=x86-cygwin,assembler=as %1.c

endlocal
コンパイルと実行

以下の内容をエディタで編集し、hello.c として、ラッパバッチファイルを保存したのと同じディレクトリに保存します。

#include <stdio.h>

int main(void)
{
	printf("Hello, world!");
	return 0;
}

コマンドプロンプトを開き、hello.c を保存したディレクトリに移動し、hello.c をコンパイルします。

compile hello

コンパイルが済んだら、実行します。

コマンドプロンプト
バッチファイルなど

バッチファイルなど

sample.zip (479 バイト)