「インストール - LLVM」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
78行目: 78行目:
  export LDFLAGS="-L/<LLVMのインストールディレクトリ>/lib"
  export LDFLAGS="-L/<LLVMのインストールディレクトリ>/lib"
  export CPPFLAGS="-I/<LLVMのインストールディレクトリ>/include"
  export CPPFLAGS="-I/<LLVMのインストールディレクトリ>/include"
<br><br>
== LLVMのクロスコンパイル ==
LLVMの実行ファイルやライブラリにおいて、ビルドされるプラットフォームとは異なるプラットフォームでホストするためにインストールすることができる。<br>
クロスコンパイル向けのビルドファイルを生成するために、<code>-DCMAKE_TOOLCHAIN_FILE</code>オプションを、LLVMのインストール時に使用するコンパイラフラグや変数を定義することができる。<br>
<br>
以下の例では、iOSをターゲットとしたLLVMをクロスビルドおよびインストールしている。<br>
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
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:CentOS]][[カテゴリ:SUSE]]
[[カテゴリ:CentOS]][[カテゴリ:SUSE]]

2022年6月2日 (木) 22:39時点における版

概要



LLVMのインストール

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" \
-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 "Unix Makefiles" \
-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