みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

Ubuntu 18.04にtinygo-0.5.0をインストールする

はじめに

つい先日、Ubuntu 18.04でtinygoをインストールする手順を書いたが、 この短期間でLLVMが8になったようで、前回の記事の内容はほぼ使えなくなったので書き直す。

ここの手順が更新されており、 Ubuntuではビルド済みのdebパッケージが提供されているので 簡単に導入したい場合はこれを使用すると良い。

ここでは前回と同様にソースからインストールする。

Requirement

あとは、ターゲットのツールチェイン。

  • ARM Cortex-M
  • AVR(Arduino)
  • WebAssembly

詳細は先述のリンク元を参照。

筆者環境はarm-none-eabiがインストール済み。

goのインストール

いろいろ手段があるが、インストーラによるインストールが一番便利だった。

$ sudo apt install wget git
$ wget -q https://storage.googleapis.com/golang/getgo/installer_linux
$ chmod +x installer_linux
$ ./installer_linux -version 1.11.7

今回もgoのバージョンは1.11.7とした。

GOPATHの設定

.bashrcに以下の内容を追加。

export PATH=$PATH:/home/mickey/.go/bin
export GOPATH=/home/mickey/go
export PATH=$PATH:/home/mickey/go/bin

llvm-8のインストール

ここを参考にした。

sources.listの追加

前回はllvm 7.0.1をインストールするために、/etc/apt/sources.list.d/llvm.listを次の内容で作成したため、 llvm8を入れたい今回は不要かもしれないが一応やっておく。

# i386 not available
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic main
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic main
# 7
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-7 main
# 8
deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main
deb-src http://apt.llvm.org/bionic/ llvm-toolchain-bionic-8 main

鍵を追加。

$ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
$ sudo apt update

パッケージのインストール

Install (stable branch)に書いてあったものをだいたい入れる。

$ sudo apt install clang-8 lldb-8 lld-8
$ sudo apt install libllvm-8-ocaml-dev libllvm8 llvm-8 llvm-8-dev llvm-8-doc llvm-8-examples llvm-8-runtime
$ sudo apt install  clang-8 clang-tools-8 clang-8-doc libclang-common-8-dev libclang-8-dev libclang1-8 clang-format-8 python-clang-8
$ sudo apt install libfuzzer-8-dev
$ sudo apt install lldb-8 lld-8 libc++-8-dev libc++abi-8-dev

tinygoのインストール

go getを実行する。今回はこれで問題なくインストールできる。

$ go get -u github.com/tinygo-org/tinygo

まとめ

最新版(0.5.0)ではdebパッケージが用意されたので、ソースからインストールしなくても簡単にインストールができる。

ソースコードからインストールする場合でも前回あったような、過渡期特有のワークアラウンドは必要なくなっている。