sudo apt install libx32stdc++-12-dev
などとして追加のライブラリをインストールする必要があります。Odinのインストール
Odinを使えるようにするには、コンパイラを中心とした開発ツールをインストールする必要があります。Odinの開発ツールは、odin
というコマンドにまとめられています。すなわち、コンパイルやビルドやテストなどをodin
というコマンドのみを使って行うことが出来ます。
インストール方法は公式のドキュメントにまとめられています。2つの選択肢があります。
- ソースコードからビルドする
- ビルド済みバイナリを利用する
どちらを選んでも、決して難しいことはありません。どちらかというとGitHubのリポジトリからソースを取得してビルドする方法が推奨されています。
必要条件
Windowsの場合、Visual Studio 2019か2022が必要です。macOSの場合、XCodeとHomebrewによるLLVMが必要です。残念ながら、WindowsとmacOSの環境が用意できないため確認ができません。なので、これ以上は詳しく触れないでおきます。
Linuxの場合は、ClangコンパイラとLLVMの特定のバージョンが必要となります。LLVMのバージョンは11.1、12、13、14、17のいずれかです。15、16が含まれていないことに注意してください。2024年3月時点では、14を選択しておくのが無難かと思われます。 なお、普通にLinuxを利用していてもClangやLLVMがインストールされている可能性は高いため、まずは一度Odinのビルドを試してから、だめだったらそれらをインストールするという手順をとっても良いでしょう。ClangもLLVMも、たいていはOSのパッケージマネージャーでインストールすることが出来ます。
Debian、Ubuntuベースのディストリビューションの場合:
$ sudo apt install clang $ sudo apt install llvm-14
これだけです。1)
Arch Linuxベースのディストリビューションの場合:
$ sudo pacman -S clang $ sudo pacman -S llvm-14
他のディストリビューションでも、それらのパッケージマネージャで同じようにインストールできるでしょう。
ソースコードからビルドする
まず、git
でソースコードを取得します。
$ git clone https://github.com/odin-lang/Odin
取得したソースコードのディレクトリに移動します。
$ cd Odin
make
を実行します。
$ make
問題がなければ、それほど長い時間をかけずにビルドが完了するはずです。
現在のディレクトリにodin
という実行ファイルが生成されているはずなので、それを実行してみます。
$ ./odin version
バージョンが表示されれば成功です。
ビルド済みバイナリを利用する
ZIPなどでアーカイブされたファイルを入手して展開するだけです。ただし、この場合も必要条件を満たしていなければなりません。
ビルド済みバイナリには、ReleaseビルドとNightlyビルドが提供されています。通常はReleaseビルドを使うのが良いかと思います。
Releaseビルドのページに行って、Assetsのところにある自身のOSに対応したZIPファイルをダウンロードします。Windows、macOS、Ubuntuだけしかありません。また、いずれもamd64アーキテクチャのものしかありません。これらに該当しない場合はソースコードからビルドする必要があります。
ダウンロードしたら、そのZIPファイルを適当な場所に展開します。ターミナルを開いて、展開したディレクトに移動します。
$ cd 展開したディレクトリのパス
ディレクトリの中にodin
という実行ファイルが含まれているので、それを実行してみます。
$ ./odin version
バージョンが表示されれば成功です。
インストール場所
Odinツールは、ソースコードからビルドした場合でも、ビルド済みバイナリを利用する場合でも、特定の場所にインストールするような仕組みにはなっていません。単に、ソースディレクトリまたは展開したディレクトリを適当な場所に手動で配置するだけです。コマンドラインでいつでもodin
コマンドを実行できるようにするためには、パスを通しておく、つまり環境変数PATHにOdinディレクトリのパスを追加しておかなければなりません。
PATHの設定方法はいくつか考えられます。Windowsの場合は、システムの設定から行います。macOS、Linuxの場合は、使用しているシェルの初期化ファイルに記述します。
これらは細かな作業であるのと本題から外れているので、ここには書かず、近いうちに別のところに書こうと思います。