みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

Ubuntu 18.04にaptでLLVM-9をインストール

はじめに

LLVM 9環境をUbuntu 18.04で構築する。

google先生に聞いても手動で設定する方法ばかり見つかったので、aptでインストールする方法を調べた。

2020/1/8 修正

リポジトリの設定

$ sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-9 main"

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

$ sudo apt install clang-9 clang-tools-9 clang-tidy-9 clang-format-9 lldb-9 lld-9 

シンボリックリンクの作成

Ubuntuでは複数のバージョンがインストールされている場合に、どのバージョンをアクティブにするかを管理するためのalternativesパッケージが存在する。

追加リポジトリでインストールしたclang-9はalternativesには対応していないようで、 /usr/bin/clangの実行時にclang-9を使用したい場合、シンボリックリンクを手動で切り替える必要がある。

$ sudo ln -s -f /usr/bin/clang-9 /usr/bin/clang
$ sudo ln -s -f /usr/bin/clang++-9 /usr/bin/clang++

素敵なスクリプトがあったので、これを使用する。

これを保存し、実行権限をつけて実行する。

$ wget https://gist.githubusercontent.com/junkdog/70231d6953592cd6f27def59fe19e50d/raw/92f0e73d2558402b7316021c1ab408b30e534de6/update-alternatives-clang.sh
$ chmod +x update-alternatives-clang.sh
$ sudo ./update-alternatives-clang.sh 9 50

その後、update-alternativesclangllvm-configを設定する。

clang

$ update-alternatives --config clang
alternative clang (/usr/bin/clang を提供) には 2 個の選択肢があります。

  選択肢    パス            優先度  状態
------------------------------------------------------------
  0            /usr/bin/clang-9   50        自動モード
  1            /usr/bin/clang-8   50        手動モード
* 2            /usr/bin/clang-9   50        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2

llvm-config

$ update-alternatives --config llvm-config
alternative llvm-config (/usr/bin/llvm-config を提供) には 2 個の選択肢があります。

  選択肢    パス                  優先度  状態
------------------------------------------------------------
  0            /usr/bin/llvm-config-8   200       自動モード
  1            /usr/bin/llvm-config-8   200       手動モード
* 2            /usr/bin/llvm-config-9   50        手動モード

現在の選択 [*] を保持するには <Enter>、さもなければ選択肢の番号のキーを押してください: 2

まとめ

http://apt.llvm.org/bionicにはllvm-toolchain-bionic-9が存在するので、 リポジトリの追加とaptコマンドでインストール可能。

alterntivesの自動設定はされないので、必要に応じてシンボリックリンクリンクを貼り替える必要がある。 素敵なスクリプトのお世話になる。