OSXで D言語を使ってみる。

  2005/09/29 インストーラ付きのものを紹介
2005/09/28

D言語について

新しい言語、色んな言語の良い部分を取り入れた言語。配列の扱いが便利。
D言語の配布元

MacOSX でD言語を使う為のメモ

*MacOSX用の D言語コンパイラをインストールして使えるようにしたい。
*Xcode で 使えるようにしたい。



*MacOSX用の D言語コンパイラを作るにはGCCコンパイラと D Front End for GCC (GDC) が必要。
*インストールが簡単なインストーラ付きの gdcmacもありますが、アンインストーラがついてないので、使用は 自己責任でお願いします。
*Xcode で利用する場合は GDC with Xcodeが必要

準備

D言語コンパイラを人の手でコンパイル、インストールする方法については、
MacOSXへのD言語開発環境の導入 (オケラボブログ) の記事が参考になりました。

ただ、自分の環境ではバージョンなどが違うため、やはりそのままでは難しく修正が必要。
自分の試したのは、GCC_VERSION=3.4.3 GDC_VERSION=0.15 の組み合わせ。OSX 10.3.9, 1.0Ghz。
適当なフォルダをつくって http://www.algonet.se/~afb/d/Makefile から ダウンロードした makefile を入れる。
以降このフォルダの中で作業を進めます(作業時の空き容量は約300MBくらい必要 )。
makefile の GCC_VERSION=3.4.3 , MAJOR=3.4 はそのまま GDC_VERSION=0.10 を GDC_VERSION=0.15 に書き換える


../configure --prefix=$(PREFIX) --enable-languages=c,d,c++
の enable-languages に,objc を追加してもしなくてもいい。


基本的にはこのような手順で行う( が、途中でエラーが出るので解決する必要あり)。
make prep
make gdc
make phobos
sudo make install
make clean ( なんか解凍した gcc のフォルダを削除するので注意)

次の項で、具体的な方法を説明します。

コンパイル&インストール

ターミナルから、 ダウンロードした makefile のある場所へ移動し、実行
make prep
( gcc と gdc の圧縮ファイルを Webからダウンロードし、解凍、gcc のディレクトリ「/gcc-3.4.3/gcc/」の中にgdc のディレクトリ「d」を入れて、 build と phobos という2つの空のディレクトリが自動的に作成される : 25分程度かかる)
make gdc
( 30分程度かかる)

そのまま続けて make phobos を行うと エラーが出るので、エラーが出る前に修正しておきます。
phobos というのはD言語の標準ライブラリのことらしい。
コンパイルできない原因は
cat ../gcc/d/phobos/config/config-head frag-ac frag-gen frag-math ../gcc/d/phobos/config/config-mid
../gcc/d/phobos/config/config-tail stamp-tgtdir > /gcc/config.d
この部分でconfig.d が書き出されないため、手作業で書き出します。

/gcc-3.4.3/gcc/から 以下の順で5つのファイルを探し出して下さい。
config-head ,
frag-ac,
frag-gen,
frag-math,
config-mid ,
config-tail (中味は空っぽなので探す必要なし),
stamp-tgtdir (中味は空っぽなので探す必要なし)

この順で各テキストファイルの中身のテキストを config.d に書き出す。
frag-math と frag-gen のファイルは、 /gcc-3.4.3/gcc/d/phobos/config/mingw から探し出すことができる。
     config.d を /gcc-3.4.3/gcc/d/phobos/gcc/ に コピーする。
また、configunix.d を /gcc-3.4.3/gcc/d/phobos/gcc/ に コピーする。
make phobos
あとは、インストールするだけ。
sudo make install
sudo make install すると /opt/gdc/bin というディレクトリに
GDC がインストールされる。 この opt ディレクトリは不可視属性がついているため通常は見ることができない。 Finderのメニュー>移動から「フォルダへ移動...」を選び 「/opt」 と打ち込むと行ける。

※ アンインストール方法。
もし、これを捨てたくなったときは、 Finderのメニュー>移動から「フォルダへ移動...」を選び 「/opt」 と打ち込んで、 opt ディレクトリ内の 「gdc」ディレクトリを削除する。opt ディレクトリは 他のプログラムが使う事があるので、削除してはいけない。


テストする

テストプログラム hello.d の内容 ( import std.stream; は 廃止(deprecated)されたらしく、使えません。)
import std.c.stdio;

int main() {
printf("Hello_World!! \n");
return 0;
}
これをhello.d という名前で保存。ターミナルを使って、 hello.d のあるディレクトリに入ってコマンドを実行する。
export コマンドを打って、GDCコンパイラ実行する為に、一時的にパスを通している。
export PATH="/opt/gdc/bin:$PATH"
gdc hello.d
コンパイルが成功すると、同じディレクトリに、「a.out」という名前のファイルができているので実行する。
gdc コマンドのオブション等、詳細についてはD言語の情報サイトで調べてください。
./a.out
Hello_World!!
「 Hello_World!!」と表示されたら成功。 いつもパスを通したい場合は、bashを使っている場合は .bash_profile に export PATH="/opt/gdc/bin:$PATH" を追加する。
これで、ターミナルからコマンドを打ってD言語を使えるようになっている状態です。


Xcode で D言語を使えるようにする。

GDC with Xcodeのページから d-xcode-support.zip をダウンロードする。これは MacOSXの Carbon を使用している。
/Library/Application Support/Apple/Developer Tools/
に、新しく Specifications というフォルダを作る。(作らないとファイルがインストールされない)
次に、InstallMe.command をダブルクリックし実行すると、ファイルがインストールされる。
これをインストールするとXcodeで D言語を使ったプログラムのソースの 色分け表示と、拡張子dのファイルの読み取りが可能になるようだ。

*Xcode で動作する サンプルプログラム-HelloDWorld, example project
こちらからダウンロードできる。
これはC++テンプレートを改造したものでCarbon を使用している。 Hello Worldの文字はGUI部分、 main.nib に書かれている。


D言語で OpenGL や SDL を利用できるようにする。

その他、D言語で既存のライブラリを使う為の Zlib , SDL , OpenGL(GLUT含む) モジュールが、 こちらからダウンロードできる。
D言語用の Allegro モジュールは 対応待ち。

パッケージ版 gdcmac

*MacOSX用の D言語コンパイラにはgdcmacというのもある。
上のやり方よりも簡単で時間もかかりません。ただしアンインストールは面倒なので、使用は 自己責任で。
(※もし試す場合は、インストールする前に パッケージ版のアンインストール方法 を読んでから)


※ GDCパッケージ版の インストール方法。
OSのバージョンに合ったgdcmac - GNU D Compiler for Mac OS Xを入手。
Panther とTiger 版が用意されている。

ダウンロードしてきた .dmg ファイルを開いて、GDC.pkg をダブルクリックし画面の指示に従ってインストールします。
このインストーラーでは /usr というディレクトリ内にインストールされる。

GDC 0.15 for Panther 用のものを使用した場合、
/usr/include/d/3.3.6
/usr/lib/gcc/powerpc-apple-darwin7/3.3.6
/usr/share/man/man1
/usr/share/man/man7
上記の場所にファイルがインストールされるようです。( dcg へのパス通しも行われているようだ!?)。

*テスト方法
コマンドラインから普通に「 dgc hello.d 」と打って、D言語で書かれたソースのコンパイルを確認。
gdmd も使える。

しかしアンインストーラが付いていない!


※ GDCパッケージ版のアンインストール方法。
Apple の pkg形式のインストーラには、 アンインストーラーが用意されていないらしい。
そのため、アンインストールの必要が出てきた場合は自分で調べてひとつひとつアンインストールしなければならない。
参考: OS X ハッキング!第123回 パッケージの削除について考える
どうかアンインストーラを付けてほしい。

GDC.pkg によって どのファイルがインストールされたか知るには、Library/Receipts ディレクトリに移動します。
cd /Library/Receipts
ls
GDC.pkg というのがあるはずなのでこのファイルに対して調べる。
次に GDC.pkg がファイルをインストールする場所の起点を調べる。
cat GDC.pkg/Contents/Info.plist | grep -i defaultlocation -A 1
とコマンドを入力すると、 インストール場所は 「/usr」直下であることがわかる。
( 注意:間違っても /usr/local/ ではないので、十分気をつける。)
( usr とか bin とかその他大事なファイルを誤って消すと大変な事になるので気をつける。)

次に、どんなファイルがインストールされたかを調べる。
lsbom GDC.pkg/Contents/Archive.bom
と打ち込むと、インストールされたファイルリストが表示されるのでメモっておく。

自分で調べたところ、Panther 10.3 用に インストールされたファイルは以下のようです。
アンインストールするには、 退避用フォルダを作って 太字 のものを そこに移動させるか、削除する。
/usr/bin/ ディレクトリにある2つのバイナリファイル(コンパイラ本体?)
    gdc
    gdmd

/usr/bin/include/ ディレクトリにあるヘッダファイル類
    /d/ ディレクトリ

/usr/lib/gcc/powerpc-apple-darwin7/ディレクトリにある
    /3.3.6/ ディレクトリ内の GDC専用 GCC3.6.6 コンパイラ関連ファイル
    cc1d
    crt2.o
    libgcc.a

/usr/lib/ディレクトリにある 2つのファイル(phobos ライブラリ)
    libgphobos.a
    libgphobos.spec

/usr/share/man/man1/ディレクトリにある2つのファイル(多分マニュアル)
    lgdc.1.gz
    lgdmd.1.gz

/usr/share/man/man7/ディレクトリにある3つのファイル(多分GPL関連文書)
    lfsf-funding.7.gz
    lgfdl.7.gz
    lgpl.7.gz

参考サイト

  • DigitalMars
  • The D Programming Language
  • D言語プログラミング (for Mac OSX)
  • D Front End for GCC GDC Dコンパイラ
  • GDC with Xcode Xcode でD言語を使う為のもの
  • MacOSXへのD言語開発環境の導入 (オケラボブログ)
  • gdc(D Front End For GCC)のインストール
  • OS X ハッキング!第123回 パッケージの削除について考える

  • D MEMO
  • 日本語リファレンス
  • D言語研究室


  • Tsukubado