CコンパイラにはOS側の準備も必要
前回は、Windows 10にLLVM/ClangとWindows Terminalをインストールする方法を紹介した。LLVM/Clangが実行できることは確認できたはずだ。
ただし、このままではC言語のソースコードからWindows 10で動作するバイナリをコンパイルして生成することはできない。C言語を使うには、コンパイラを用意するだけではなく、オペレーティングシステム側にもそれを受けるセットアップが必要だからだ。これはWindowsに限った話ではなく、多くのオペレーティングシステムでそうなっていることが多い。
UNIX系プラットフォームの場合、最初からセットアップを済ませているものもあるが、そうではない場合、いわゆる「開発ツール」と呼ばれるものをインストールする必要があることが多い。オペレーティングシステム側にC言語開発用のファイルなどを用意する必要があるのだ。
こうした仕組みを知っておくと、Windows 10以外のプラットフォームでC言語開発のセットアップをする際に迷うことが少なくなる。今回は、Windows 10でC言語のソースコードをコンパイルするために必要なセットアップを行おう。
Build Tools for Visual Studio 2019
Windows 10でC言語開発用のセットアップを行う方法はいくつかある。Microsoftが提供している方法のうち、今回の用途に近いものは「Build Tools for Visual Studio 2019」だろう。ただし、Visual Studioがインストール済であったり、会社や学校からVisual Studioのライセンスを付与されていたりしているのであれば、Build Tools for Visual Studio 2019ではなくVisual Studioでもよい。
「Build Tools for Visual Studio 2019」は、以下のページからダウンロードできる。このページのUI/UXは時折変わるので、その時のページに合わせて読み替えてほしい。
ページの下部に「Visual Studio 2019のツール」といったメニューが折りたたまれていると思うので、これを展開する。
展開したメニューの中に「Build Tools for Visual Studio 2019」という項目があるはずなので、これをダウンロードする。
ダウンロードしたインストーラを実行すると、次のようなインストーラが起動してくる。インストーラ自体の名前は「Visual Studio Installer」になっている。
インストールの途中でインストールする対象を選ぶ画面が表示されるので、ここで少なくとも「C++ Build Tools」を選択する。必要があれば他の項目を選択したり、インストールの詳細を編集したりしてもらってかまわないが、最初のうちは「C++ Build Tools」は確実に選択しておこう。
これでC言語をコンパイルするためのWindows 10側の最低限の準備は完了だ。
Hello World!
早速、Cのソースコードを書いてコンパイルし実行してみよう。まだ統合開発環境はインストールしていないので、Windows Terminalで作業だ。次のように適度な場所に移動してから、メモ帳(notepad.exe)を起動してCのソースコードを書いて保存する。
ソースコードには、次のような内容を書く。hello.cとして保存したら、Windows Terminalに処理を戻す。
hello.c
#include <stdio.h>
int
main(void)
{
printf("Hello World!\n");
return 0;
}
Windows Terminalに戻ってきたら、次のようにclang-cl.exeコンパイラを使ってhello.cファイルをコンパイルする。
Cのソースコードをコンパイル
clang-cl.exe hello.c
コンパイルを行うと、次のスクリーンショットのようにバイナリファイル(hello.exe)が生成される。このファイルは実行することが可能で、実行すれば「Hello World!」といったメッセージが出力される。
これで、Windows 10でCのソースコードをコンパイルする必要最小限の準備が整ったことになる。
UNIX系のオペレーティングシステムの場合、パッケージ管理システムからビルドツールをインストールすると自動的にこの辺りの必要なファイルがそろうことが多い。どのプラットフォームを使う場合にせよ、ここで取り上げたようにコンパイラそのものとオペレーティングシステム側のセットアップと、双方が必要になることは覚えておこう。
なお、組み込み開発はクロスコンパイルといった開発方法を使い、今回取り上げた仕組みとは異なっていることも多い。ともあれ、対象のプラットフォームに合わせた方法で準備を行う必要がある。