インストール - LLVM
ナビゲーションに移動
検索に移動
概要
LLVMのインストール
パッケージ管理システムからインストール
sudo zypper install
ソースコードからインストール
LLVMのGithubから、LLVMのソースコードをダウンロードする。
ダウンロードするファイルは、llvm-project-<バージョン>.src.tar.xzである。
ダウンロードしたLLVMのソースコードを解凍する。
tar xf llvm-project-<バージョン>.src.tar.xz
LLVMのビルドディレクトリを作成する。
cd llvm-project mkdir build && cd build
LLVMをビルドおよびインストールする。
cmake -G "Unix Makefiles" \ -DCMAKE_CXX_COMPILER=<c++20に対応したg++コンパイラのパス> \ -DLLVM_TARGETS_TO_BUILD="X86;AArch64" \ # x86, x86-64, AArch64向けのLLVMをビルドする場合(デフォルトは全てのアーキテクチャ) -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=<LLVMのインストールディレクトリ> \ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;flang;libclc;libcxx;libcxxabi;libunwind;lld;lldb;mlir;openmp;polly" \ ../llvm make -j $(nproc) make install # または cmake -G Ninja \ -DCMAKE_CXX_COMPILER=<c++20に対応したg++コンパイラのパス> \ -DLLVM_TARGETS_TO_BUILD="X86;AArch64" \ # x86, x86-64, AArch64向けのLLVMをビルドする場合(デフォルトは全てのアーキテクチャ) -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=<LLVMのインストールディレクトリ> \ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;flang;libclc;libcxx;libcxxabi;libunwind;lld;lldb;mlir;openmp;polly" \ ../llvm ninja -j $(nproc) ninja install
ビルド向けオプションは、以下の通りである。
- PYTHON_EXECUTABLE
- Pythonへのパスを渡すことで、CMakeに特定のPythonのバージョンを使用する。
- デフォルトでは環境変数PATHにあるPythonが使用される。
- LLVM_TARGETS_TO_BUILD
- ビルドするターゲットを選択する。
- これは、LLVMにどのターゲットをリンクするかを制御するセミコロンで区切られたリストである。
- デフォルトは、LLVM_ALL_TARGETSとして定義されている。
- デフォルトでは、以下のターゲットが含まれる。
- AArch64, AMDGPU, ARM, AVR, BPF, Hexagon, Lanai, Mips, MSP430, NVPTX, PowerPC, RISCV, Sparc, SystemZ, WebAssembly, X86, XCore
- LLVM_ENABLE_DOXYGEN
- ソースコードからdoxygenベースのドキュメントをビルドする。
- これは多くの出力を生成するため、デフォルトでは無効になっている。
- LLVM_ENABLE_PROJECTS
- 他のLLVMサブプロジェクトの内、どのプロジェクトを追加でビルドするかをセミコロンで区切ったリストで指定する。
- デフォルトでは空のリストである。
- ビルドできるプロジェクトは、以下の通りである。
- clang、clang-tools-extra、compiler-rt、cross-project-tests、flang、libc、libclc、libcxx、libcxxabi、libunwind、lld、lldb、mlir、openmp、polly、pstl
- LLVM_ENABLE_SPHINX
- Sphinxベースのドキュメントをビルドする。
- これは多くの出力を生成するため、デフォルトでは無効になっている。
- Sphinx 1.5以降を推奨する。
- LLVM_BUILD_LLVM_DYLIB
- libLLVM.soを生成する。
- このライブラリには、LLVMコンポーネントのデフォルトセットが含まれており、LLVM_DYLIB_COMPONENTSでオーバーライドすることができる。
- デフォルトでは、ほとんどのLLVMが含まれており、tools/llvm-shlib/CMakelists.txtで定義されている。
- このオプションはWindowsでは使用できない。
- LLVM_OPTIMIZED_TABLEGEN
- リリーステーブル生成器を構築する。
LLVMのインストール完了後、~/.profileファイル等に環境変数を設定する。
export PATH="/<LLVMのインストールディレクトリ>/bin:$PATH" export LLVM_INSTALL_DIR="<LLVMのインストールディレクトリ>" export LDFLAGS="-L/<LLVMのインストールディレクトリ>/lib" # 不要の可能性あり export CPPFLAGS="-I/<LLVMのインストールディレクトリ>/include" # 不要の可能性あり
LLVMのクロスコンパイル
LLVMの実行ファイルやライブラリにおいて、ビルドされるプラットフォームとは異なるプラットフォームでホストするためにインストールすることができる。
クロスコンパイル向けのビルドファイルを生成するために、-DCMAKE_TOOLCHAIN_FILE
オプションを、LLVMのインストール時に使用するコンパイラフラグや変数を定義することができる。
以下の例では、iOSをターゲットとしたLLVMをクロスビルドおよびインストールしている。
mkdir build && cd build cmake -G Ninja "Unix Makefiles" \ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<LLVMのインストールディレクトリ> \ -DCMAKE_OSX_ARCHITECTURES="armv7;armv7s;arm64" \ -DCMAKE_TOOLCHAIN_FILE=<PATH_TO_LLVM>/cmake/platforms/iOS.cmake \ -DLLVM_BUILD_RUNTIME=Off -DLLVM_INCLUDE_TESTS=Off \ -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_ENABLE_BACKTRACES=Off \ ../llvm ninja -j $(nproc) ninja install