C++をきっちり使いっているみなさんなら、なるべく最新のClangを使いたくなると思います。
しかし、dist公式パッケージには古いやつしかない…。
なのでソースビルドをしたいけれど、いっぱい色々落としてきたり特定の場所に置いたりするのが面倒&間違えそう。
そんな人(主に私)のために、随分前からClangを自力でビルドするスクリプトをbitbucketのsnipetに公開していたんですが
- 毎回たどり着くのが難しい(snipetってgoogle検索に引っかからないらしい)
- 使い方を忘れる
という声を聞いたので、紹介がてらQiita記事にしておきます。
簡単な使い方
まず、スクリプト自体は https://bitbucket.org/aokomoriuta/workspace/snippets/KqEaE にあります。
使い方は簡単で、スクリプトのコメントにもありますが
$ cd /where/you/want/to/build
$ curl -L 'https://bitbucket.org/!api/2.0/snippets/aokomoriuta/KqEaE/master/files/clang.sh' | bash
だけです。これでClangが使えるようになります。
なにが起きるのか
ぱっと読んで分かると思いますが、
-
/where/you/want/to/build
(つまり、自分がビルドしたいディレクトリをどこか適当に作ったところ、例えば~/clang/
)に移動して - 上記スクリプトのmaster(最新版)をダウンロードして実行
しているだけです。
これをすると、
- 指定されたバージョンの
- ソースコードのtarが自動でダウンロードされ
- 適切な場所に展開され
- cmake&makeを使って、x86向けリリースビルドされる
という感じです。汎用的になってないので、特殊な環境では動かないかもしれませんが、私が日ごろ使うFedora/Ubuntu/CentOS/RHELあたりでは動いています。
ビルド時にcmakeのバージョンが古かったり、依存パッケージがないって怒られることもあるかもしれませんが、Clangを自力ビルドするような方ならエラーメッセージ見れば自己解決できますよね。
バージョンを上げたい下げたい
記事執筆時点ではv11.0.1に対応させてありますが、私が気づいたタイミングで更新し続けているので、これを読んだ方はもっと新しいバージョンがあるかもしれません。
私が対応してあったら、masterは私が気づいた時点での最新版になってると思います。
もしもっと新しいバージョンにしたければ、スクリプトを時前で落としてきて
$ wget 'https://bitbucket.org/!api/2.0/snippets/aokomoriuta/KqEaE/master/files/clang.sh'
clang.shの中にあるVERSION=
を変えて、自力でbash clang.sh
とかして使ってください。それだけで動くはずです。
古いバージョンにしたい場合も同様に、VERSION
を変えてください。
ただし、それなりに古いバージョン(例えばのv9.0.0とか)の場合、LLVMがまだgithub.comになかった時代なので、その場合は更新履歴から古い時代のスクリプトを持ってきて使ってください。
余談:システムインストールもしたい
$ sudo make install
で強制的にインストールもできますが、もうちょっと管理したければporgを使って、
$ sudo porg -lp clang-11 make install
とかしても良いと思います。suffixとかホーム以下へのインストールをしたい人はcmakeのオプションで指定しましょう。
サポート
別にClang/LLVMの専門家ではないのでサポートとかは保証しませんが、ここのコメントとかに書いてあったら誰か気づいた人(私かもしれない)が回答してくれるかもしれませんね。
フリーライセンスにしてあるので、問題があればライセンスにしたがって改変・再配布ご自由にどうぞ。snipetなのでpull reqみたいな仕組みはないですが、適当な形で投げてくれれば適当に取り込みます。