Help us understand the problem. What is going on with this article?

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

その他の方法

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

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

https://dlang.org/download.html

Mac

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

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

https://dlang.org/download.html

Windows

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

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

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

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

1.png

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

image.png

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

image.png

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

image.png

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

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

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

image.png

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

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

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

image.png

image.png

image.png

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

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

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

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

image.png

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

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

image.png

なぜじゃ~!!

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

image.png

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

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

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

image.png

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

image.png

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

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

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

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

image.png

こちらの問題はすでに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 国際 ライセンスの下に提供されています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした