[Docker][build][自分用メモ] containerイメージでbuildする際にclangを使用するようにした。

AIX、UNIX、LinuxContainer
ruben-bagues-499737-unsplash

dockerでcontainerイメージを作成する際に、内部のプログラムを使用するときは基本的にgnu gcc/g++を使用すると思います。

基本中の基本だと思うので、特別な要件が無ければ他のコンパイラを使用することはないと思います

が、最近の流れからどうなんだろうなぁということで、clangを使用するようにしてみました。

clangを使用するうえでよく言われているのは、コンパイルの速度が速いことが挙げられます(エラー内容が分かりやすいというのもありますが、今回はbuildが対象なので挙げません)。

とはいえ、自分が良く使用する環境はAArch64なArm SBCばかりなので、大きな恩恵を受けるわけではありませんが。

それでも体感的に速くなったと思います(UnboundやNSDなんかはだいぶ向上しました。ただ、timeなどでデータを取るのを忘れていました)。

他にもこの際だからということで、リンカ/linkerをgnu.ldからlldに変更してみました。

LDFLAGS="-fuse-ld=lld"

これについてはさすがにArm SBC上で大きなプログラムをbuildすることがないので、お約束程度ですね。

今回は最適化を”-O4“でしていますが、Dockerなどのcontainerを使用する意味では、サイズを優先した方がいいんですかね・・・? この辺りは性能とのトレードオフだと思うので、私はパフォーマンスに振るようにしましたが。

この辺りのお作法はいまだによく分かっていないので、引き続き勉強が必要な感じです。
科学計算のプログラムを弄ることがあればこの辺りの知識は必須なんでしょうが、勉強する機会に恵まれず・・・

ちなみに自分のレポジトリは以下にあります。

kometchtech/docker-build: personal docker build for armhf and aarch64

makeの他にcmakeがあるのは知っていたのですが、他にもninjaという名のものもあるんですね。この辺り本当に知りませんでした。

Ninja, a small build system with a focus on speed
この記事を書いた人

kometchtech

うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。 Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

kometchtechをフォローする
タイトルとURLをコピーしました