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

407行目: 407行目:
<br>
<br>


==== iOS ====
==== ARM EABIHF ====
以下の例では、iOSをターゲットとしたLLVMをクロスビルドおよびインストールしている。<br>
ABIとは、コンパイルされたバイナリコード同士がどのように通信し合うかを定めるプロトコルである。<br>
ABIは関数を呼び出す際にどのレジスタを使うか、引数をどの順序でスタックに積むか、戻り値をどこに格納するか、構造体のメモリ配置はどうするか、といった細かい取り決めを規定している。<br>
<br>
異なるABIでコンパイルされたライブラリとプログラムは、例え同じCPUアーキテクチャであっても正しく連携できない。<br>
<br>
  mkdir build && cd build
  mkdir build && cd build
   
   
cmake -G Ninja "Unix Makefiles"                                                          \
cmake -G Ninja \
                -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<LLVMのインストールディレクトリ> \
      -DCMAKE_BUILD_TYPE=Release                           \
                -DCMAKE_OSX_ARCHITECTURES="armv7;armv7s;arm64"                             \
      -DCMAKE_INSTALL_PREFIX=<LLVMのんストールディレクトリ> \
                -DCMAKE_TOOLCHAIN_FILE=<PATH_TO_LLVM>/cmake/platforms/iOS.cmake            \
      -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;lld" \
                -DLLVM_BUILD_RUNTIME=Off -DLLVM_INCLUDE_TESTS=Off                         \
      -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64"            \
                -DLLVM_INCLUDE_EXAMPLES=Off -DLLVM_ENABLE_BACKTRACES=Off                  \
      -DLLVM_ENABLE_LLD=ON                                  \
                ../llvm
      -DLLVM_ENABLE_LIBCXX=OFF                              \
      -DLLVM_ENABLE_ASSERTIONS=OFF                          \
      -DLLVM_OPTIMIZED_TABLEGEN=ON                         \
      -DLLVM_USE_LINKER=lld                                \
      -DLLVM_PARALLEL_LINK_JOBS=2                          \
      ../llvm
   
   
  ninja -j $(nproc)
  ninja -j $(nproc)