D言語環境構築 2019年版


はじめに

去年のアドベントカレンダーの記事に引き続き、今年も人生最良の行動(D言語インストール)についてまとめます。

Linux

インストールスクリプト

Linux環境では、やはりインストールスクリプトを使用するのが簡単です。

インストールスクリプトにより、DMD・LDC・GDCの3種類のコンパイラがインストール可能です。

$ curl https://dlang.org/install.sh | bash -s

実行後、ホームディレクトリにdlangディレクトリが作られ、その中にdmdが格納されます。

$ ls ~/dlang
d-keyring.gpg  dmd-2.089.0  install.sh

sourceで実行パス等を通すことでdmdを使用できます。

$ source ~/dlang/dmd-2.089.0/activate
(dmd-2.089.0) $ dmd --version
DMD64 D Compiler v2.089.0
Copyright (C) 1999-2019 by The D Language Foundation, All Rights Reserved written by Walter Bright

同じスクリプトでLDC・GDCもインストールできます。2つ目以降はダウンロード済みのinstall.shを使用できます。

$ ~/dlang/install.sh ldc
# (中略)
$ source ~/dlang/ldc-1.18.0/activate
(ldc-1.18.0) $ ldc2 --version
LDC - the LLVM D compiler (1.18.0):
  based on DMD v2.088.1 and LLVM 9.0.0
  built with LDC - the LLVM D compiler (1.18.0)
  Default target: x86_64-unknown-linux-gnu
  Host CPU: broadwell
  http://dlang.org - http://wiki.dlang.org/LDC
# (後略)
$ ~/dlang/install.sh gdc
(中略)
$ source ~/dlang/gdc-4.8.5/activate
(gdc-4.8.5) $ gdc --version
gdc (gdcproject.org 20161225-v2.068.2_gcc4.8) 4.8.5
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

activateで設定した環境変数は、deactivateで解除されます。

$ source ~/dlang/dmd-2.089.0/activate
(dmd-2.089.0) $ deactivate
$ source ~/dlang/ldc-1.18.0/activate
(ldc-1.18.0) $ deactivate
$ source ~/dlang/gdc-4.8.5/activate
(gdc-4.8.5) $ deactivate

その他の方法

その他のパッケージマネージャー・バイナリなども、各ディストリビューション向けに用意されています。

詳しくは下記のページの下の方に書いてあります。

Mac

Macも同様にinstall.shが使用できます。

また、dmgファイルやHomebrewのパッケージも用意されています。

Windows

さて、64bit対応で毎回鬼門になるWindowsです。今回はどうでしょうか……。

公式サイトからダウンロード

D言語公式サイトからおもむろにdmdのインストーラーをダウンロードし、とりあえずインストールしてみます。
今回は @mono_shoo さんに「Windowsサンドボックス」という機能を教えてもらいました!
Windowsまったく分からん勢なので知らなかった……。今回大活躍です。(伏線)

(親の顔より見た公式サイト https://dlang.org/)

インストーラーを起動します。ごく普通のWindows向けのインストーラーです。

インストールオプションの選択です。なんか古いdmcというC言語コンパイラやVisualD(VisualStudio拡張)もインストールできますが、いったん無視してデフォルトのままインストールします。

インストール先も適当にデフォルトのままにします。

次の選択肢が割と大事です。

D言語は通常、C言語のランタイムライブラリを使用するようにコンパイルされます。
(それを回避する方法もありますが、普通じゃないです)
そのため、各種プラットフォームのC言語のランタイムライブラリが必要になります。
Linuxではふつうにglibcなどがありますが、Windowsでは、Visual Studio C++のランタイムライブラリ、およびそれをリンクできるリンカーを使用します。

ここでは、そのためのランタイムライブラリおよびリンカーなどを選択することになります。

これからD言語使おうというときにいきなりVisual Studio 2017入れたりするのは本末転倒なので、ここでは64bitの実行ファイルが作れる一番小さい構成でインストールを行います。

上から4つ目の「Install VC2010 redistributables to use it with MinGW Plaftorm libraries」というのが、その最小構成になります。

こちらであれば、VC2010の再配布可能パッケージ(10MBくらい)と、MinGWのライブラリ、およびlld-linkerというLLVMのものらしきリンカーのみのインストールで済みます。

途中VC2010再配布パッケージのインストールを挟みつつ、インストールが完了しました!

これでdmdのコマンドラインツールが使用できるようになっています。早速PowerShellからでも使ってみましょう!

適当なディレクトリを作り、パッケージマネージャであるdubを使ってプロジェクトを作ってみます。

以下のようにコマンドを叩くと、Hello,World!が自動で作成されます。

綺麗だろ。動かないんだぜ、これ。

(dub runコマンドで生成されたプログラムが実行できるはずなのですが……)

なぜじゃ~!!

ちなみに直接Explorerから叩くとこんなエラーになります。

「msvcr100.dll が見つからないため、コードの実行を続行できません。プログラムを
再インストールすると、この問題が解決する可能性があります。」

必要なDLLが足りない、つまりランタイムライブラリのインストールが足りないという問題です……。

え!インストーラーでインストールしたじゃん!!と思ってスクショをたどってみると……。

いっぽう、ビルドした実行ファイルは……

つまり、デフォルトでx86_64でビルドされるけど、そのためのランタイムライブラリがインストーラーでインストールされない!

そこで、VC2010のx64向けランタイムライブラリをインストールすると、解決します。

(こちらが最新? なお、VC2010でないと必要なDLLが入っていなかったりします……。VC2015・2017などではダメ疑惑あり)
https://www.microsoft.com/ja-jp/download/confirmation.aspx?id=26999

とにかく上記リンクのパッケージをインストールすると解決します。

こちらの問題はすでにBugzillaに上がっていました……。なんか結構議論されている雰囲気。

https://issues.dlang.org/show_bug.cgi?id=20061
https://issues.dlang.org/show_bug.cgi?id=19760

去年に比べて64bit対応が進んでいますが、ランタイムライブラリはまだちょっとDLL Hellでしたね。

あとはVSCodeとcode-dでコーディングするなり、私のようにメモリ4GBのMacbook Airで素のvimで頑張るなり、好きなようにD言語のコーディングを楽しめます!

ライセンス


この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。