LoginSignup
1
0

More than 1 year has passed since last update.

LLVM/Clang 14をビルドする

Last updated at Posted at 2022-08-19

公式ドキュメント:

cmake

sudo apt install cmake ninja-build
ghq get llvm/llvm-project
cd src/github.com/llvm/llvm-project

mkdir build
cd build
cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=On -DLLVM_BUILD_LLVM_DYLIB=On -G Ninja --install-prefix /opt/llvm-14 ../llvm

-G "Unix Makefiles" だとrace conditionか何かでうまくリンクできなかったのでninjaに変えた。

LLVM_BUILD_LLVM_DYLIBを使っているのは、libclangのsoはデフォルトで生成されるもののLLVMのsoは生成されず、両方ないとうまいことClangを使うプログラムがリンクできなかったため。その後、 https://stackoverflow.com/questions/51474188/using-shared-object-so-by-command-opt-in-llvm も見て -DBUILD_SHARED_LIBS=On も追加。

ninja

ninja

-jなしで並列ビルドされる。ビルドが終盤になるとメモリの使用量が増えてきて64GB RAMと2GBのスワップを使い切りマシンがクラッシュしたりldがSIGKILLされたりするので、htopでメモリ使用量を監視し、適当な場所でC-cし、以下のように並列度を下げる。

ninja -j 3

なお、↑でも上手くいかない場合は ninja -l 5 のようにやるとload averageを見て負荷を抑えることができる。

ninja install

sudo ninja install

リンク

g++ $(/opt/llvm-14/bin/llvm-config --cxxflags) compile.cc -c
g++ compile.o $(/opt/llvm-14/bin/llvm-config --ldflags --libs) /opt/llvm-14/lib/libclang-cpp.so

そもそもカスタムプレフィクスは諦めた方がよさそう

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0