Hatena::ブログ(Diary)

KMYの日記

2016-12-04 Gentoo Advent Calendar

[] Gentoo Advent Calendar 4日目 「portageで使うコンパイラとかそんな感じの話」 00:13

http://www.adventar.org/calendars/1493

この記事は,Gentoo Advent Calendar 2016 4日目の記事です.


記事のあらまし:Gentoo/Linuxでは,portageCC/CXXにgcc/g++以外も利用できるよ!でも一部のパッケージはgcc/g++以外のコンパイラだとビルドに失敗するから注意な!*1


Gentoo/Linuxを利用している皆さんは,その仕組み上,他の人よりも多くのコンパイルを行うでしょう.Gentoo/Linuxは,以下に示すように複数のC/C++コンパイラをパッケージとして提供しています.

  • sys-devel/gcc
  • sys-devel/clang
  • dev-lang/icc

Gentoo/LinuxデフォルトCC/CXXはgcc/g++です.しかし,ビルド速度や実行速度の面から別のコンパイラを試してみたいと思うこともあるでしょう.

Gentoo/Linuxでは,gcc/g++以外をデフォルトコンパイラとして利用できます.設定はわずか3ステップです.

具体的な記述方法は,以下のURLを参照してください.

https://wiki.gentoo.org/wiki/Clang#Setting_up_GCC_fallback_environments

暫くシステムのCC/CXXをclang/clang++にして生活した結果,体感ではだいたいのパッケージが問題なくビルドできています.しかし,一部のパッケージはビルドに失敗しました.以下,package.envを眺めながら「ビルドに失敗したパッケージとその原因」を列挙します.

  • sys-devel/gcc

gccをclangでビルドしようとすると盛大に失敗します.仕方ないね.

追記:追試したらclang-3.7.1でgcc-4.9.3のビルドに成功した.

単純にコンパイラのバージョンチェックで失敗しました.clangのバージョン数が上がっていけば解決するのだろうか.

Sorry, but gcc-4.4 and earlier won't work for libreoffice-bin package (see bug #387515).

  • app-text/aspell

何も言わずにこける.clang側で非対応なGCC拡張でも利用しているのだろうか.

OpenMP compatible compilerを使え」と怒られてabortしてしまった.何も考えずにgccにフォールバックしたが,OpenMP対応を追加してビルドしなおせばclangでも通りそう.




特に山もオチも無い記事でしたが,あなたもコンパイラを変えて装い新たなGentoo/Linuxを使ってみませんか?*2

*1: 走り書きを検証する元気と時間がない

*2: 特にICC

NTSC-JNTSC-J 2016/12/23 21:57 Clangを使うなら、今はこんな感じでGCCにほとんど依存しないC++ツールチェインが作れていい感じです
https://blogs.gentoo.org/gsoc2016-native-clang/2016/08/14/use-clang-as-a-native-compiler-in-gentoo/