📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

352行目: 352行目:
<br>
<br>
==== AArch64 ====
==== AArch64 ====
以下の例では、AArch64をターゲットとしたLLVMをクロスビルドおよびインストールしている。<br>
以下の例では、x64のホストPCおよびAArch64のターゲットPCにおけるLLVMツールチェーンをビルドおよびインストールしている。<br>
<br>
<u>※注意</u><br>
<u>LLVM / Clangをビルドする段階では、AArch64のシステムルートをオプションとして追加する必要はない。</u><br>
# ビルドディレクトリの作成
  mkdir build && cd build
  mkdir build && cd build
   
   
  cmake -G Ninja                                                       \
# CMakeの設定
       -DCMAKE_BUILD_TYPE=Release                                     \
  cmake -G Ninja \
       -DCMAKE_INSTALL_PREFIX=<LLVMクロスツールチェーンのインストールディレクトリ> \
       -DCMAKE_BUILD_TYPE=Release \
       -DCMAKE_C_COMPILER=/<クロスコンパイラのパス  例: aarch64-unknown-linux-gnu-gcc>  \  # CMakeツールチェーンファイルを使用しない場合
       -DCMAKE_INSTALL_PREFIX=<LLVMツールチェーンのインストールディレクトリ> \
      -DCMAKE_CXX_COMPILER=/<クロスコンパイラのパス  例: aarch64-unknown-linux-gnu-g++> \  # CMakeツールチェーンファイルを使用しない場合
       -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld" \
      -DCMAKE_CXX_FLAGS='-march=armv8-a -mtune=cortex-a53'                       \  # CMakeツールチェーンファイルを使用しない場合 (左の例は、PinePhoneの場合)
       -DLLVM_TARGETS_TO_BUILD="X86;AArch64" \
      -DCMAKE_TOOLCHAIN_FILE=<CMakeツールチェーンファイルのパス>                        \  # CMakeツールチェーンファイルを使用する場合
       -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu \
      -DLLVM_NATIVE_TOOL_DIR=/<ホスト向けLLVMのインストールディレクトリ>/bin                \
       -DLLVM_ENABLE_LLD=ON \
      -DCMAKE_CROSSCOMPILING=1              \
       -DLLVM_ENABLE_LIBCXX=OFF \
      -DLLVM_TARGET_ARCH="AArch64"          \
       -DLLVM_ENABLE_ASSERTIONS=OFF \
       -DLLVM_TARGETS_TO_BUILD="AArch64"     \
       -DLLVM_OPTIMIZED_TABLEGEN=ON \
      -DLLVM_BUILD_RUNTIME=Off              \
       -DLLVM_USE_LINKER=lld \
      -DLLVM_INCLUDE_TESTS=Off              \
       -DLLVM_PARALLEL_LINK_JOBS=2 \
      -DLLVM_INCLUDE_EXAMPLES=Off            \
      -DLLVM_ENABLE_BACKTRACES=Off          \
       -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-unknown-linux-gnu         \
       -DLLVM_TABLEGEN=/<ホスト向けLLVMのインストールディレクトリ>/bin/llvm-tblgen    \
       -DCLANG_TABLEGEN=/<ホスト向けLLVMのインストールディレクトリ>/bin/clang-tblgen  \
       -DCMAKE_LIBRARY_ARCHITECTURE=/<ターゲットのシステムルートのパス>/lib          \
       -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;lld;lldb" \
       -DLLVM_INSTALL_TOOLCHAIN_ONLY=On \
      -DLLDB_ENABLE_PYTHON=0          \
      -DLLDB_ENABLE_LIBEDIT=0          \
      -DLLDB_ENABLE_CURSES=0          \
       -DLLVM_BUILD_LLVM_DYLIB=On      \
      -DLLVM_LINK_LLVM_DYLIB=On        \
      -DDEFAULT_SYSROOT=<ターゲットのシステムルートディレクトリ> \
       ../llvm
       ../llvm
# ビルド
ninja -j$(nproc)
# インストール
ninja install
<br>
* -DCMAKE_BUILD_TYPE=Release
*: 開発用途であればRelWithDebInfoでもよい。
*: <br>
* -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld"
*: 必要なプロジェクトを指定する。
*: lld (LLVMリンカー) はクロスコンパイルで必要となる。
*: <br>
* -DLLVM_TARGETS_TO_BUILD="X86;AArch64"
*: ホスト (x64) と ターゲット (AArch64) の両方を含める。
*: これにより、両方のアーキテクチャ用にコンパイルできる。
*: <br>
* -DLLVM_DEFAULT_TARGET_TRIPLE=aarch64-linux-gnu
*: デフォルトのターゲットをAArch64に設定する。
*: ただし、Qtのビルドシステムでは明示的に指定することが多いため、このオプションは任意である。
*: <br>
* -DLLVM_ENABLE_LLD=ON
*: LLDリンカーを有効化する。
*: これは、クロスリンク時に便利である。
*: <br>
* -DLLVM_OPTIMIZED_TABLEGEN=ON
*: ビルド時間を短縮するための最適化
*: <br>
* -DLLVM_PARALLEL_LINK_JOBS=2
*: リンク処理の並列数を制限する。
*: メモリ不足を防ぐため、システムRAMが16[GB]未満の場合は1または2に設定することを推奨する。
<br>
<br>
==== iOS ====
==== iOS ====
以下の例では、iOSをターゲットとしたLLVMをクロスビルドおよびインストールしている。<br>
以下の例では、iOSをターゲットとしたLLVMをクロスビルドおよびインストールしている。<br>