はじめに
FreeBSD(にしようかと(以下略)を読んで、GhostBSDをインストールした人が次にやりたいと思うことはもちろんプログラムのコンパイルでしょう。でも、最近のGhostBSDでは、えっ!?、となりますので、それを解決するまでの記録です。
ここでは対象としてLiberty Eiffelのコンパイラー一式のコンパイルを目標にします。が、「Liberty Eiffelのコンパイラー」って基盤部分はCで書かれていますので、Cのプログラムをコンパイルしたいなと思った場合一般に役立つはずです。
あと、以下のコマンドの中には普通はsudo1が必要になるものがあるかと思いますが、敢えて付けていません。(マネするのはいいけど、考えてマネしてね、ということで。)
最初の試み
$ git clone git://git.sv.gnu.org/liberty-eiffel.git
$ cd liberty-eiffel/
$ pkg install boehm-gc
$ ./install.sh
ほとんどの行は自明かと思います(Gitで本家から持ってきて、展開されたディレクトリに移動して、インストール、と)。3行目はやらなくてもいいのですけど、インストール時に警告が出ますので先にやっておきます。(これはガベージコレクタでして、なければないでコンパイルはできます。ただ、FreeBSD/GhostBSDにはパッケージで用意されていて、導入は簡単ですから、ここでやっています。)
stdio.hがない!?
これでインストールできて欲しいところですよね。が、いきなりエラーになりました。エラメッセージを読むと stdio.hがない ということのようです。 えっ?stdio.hがない!? 一体どういうことでしょうか。
「Liberty Eiffelのコンパイラーなんてニッチなものをコンパイルしようとしているのが悪いんだ」と思った方、そうではないのです。C で "hello world" とでも出力するプログラムを作ってコンパイルしてみましょう。(超有名なプログラムだと思うので、プログラム自体はここには載せませんよ)
cc hello.c
同じく stdio.hがない というエラーでコンパイルできません。
解決策
最近のGhostBSDは初期状態では開発環境が入らなくなったようです。でも、Cコンパイラー2だけは入っているため、インクルードファイルが見つからずに stdio.hがない というエラーになるようです。ということで、以下のコマンドで解決です。
$ pkg install -g 'GhostBSD*-dev'
以下のページに開発者さんが書いてました。("Why can’t I compile code or ports on GhostBSD?" のところです。)
再挑戦
$ ./install.sh
$ cd tutorial/
$ ../target/bin/se c hello_world.e
$ ./a.out
Hello World.
今度は install.sh でコンパイラー一式ができました。2行目以降はできあがったコンパイラーの動作確認です。tutorial ディレクトリに "Hello World." と表示するサンプルプログラムがありますので、それをコンパイルして、その結果できたプログラムを実行しています。確かに "Hello World." と表示されました。めでたし、めでたし。
おことわり
この文章の内容は、筆者が所属している会社・団体とは一切関わりがありません。いわゆる「自主的な研究の成果の発表」というものです。