LoginSignup
0
0

More than 1 year has passed since last update.

8GB メモリの x86_64 で LLVM/Clang のビルドに GCC で失敗。 Clang で成功した。

Last updated at Posted at 2023-03-13

環境:

  • Ubuntu 22.04.2 LTS
  • x86_64
  • メモリ 8GB

以下のパッケージは apt で導入したもの。

  • GCC 11.3.0
  • Clang 15.0.6

GCC で失敗したよ

@k0kubun, LLVM/Clang 14をビルドする, Qiita を参考に GCC で LLVM/Clang をビルドした結果、リンカがメモリを食いつぶして失敗する。
top コマンドで観察する限りリンカは実メモリ 6GB 以上の大きさにまで膨れる。

で、今どき 8GB メモリじゃビルドできないパッケージもあるんだろうなぁ、と Twitter で何気なくつぶやいたところ、親切にも 8GB でもビルドできるとの知らせを @omniroid_dev さんより受けた。

Clang で成功したよ

そのツイートにあったリンク tinyreminder, Raspberry PiでのLLVMツールチェインのビルド, Zenn を参考にして Clang でビルドしたところ成功した。

その記事は、環境がいくつか異なるため Arm/Raspberry Pi OS にいくつか項目を変更した。

パッケージのインストール:

$ sudo apt install cmake ninja-build binutils-dev  \
                   clang-15 libc++-15-dev libc++abi-15-dev lld-15 llvm-15 

環境変数の設定:

export CC=clang-15
export CXX=clang++-15
export AR=llvm-ar-15
export AS=llvm-as-15
#export LD=ld.mold
export LD=ld.lld-15
export NM=llvm-nm-15
export RANLIB=llvm-ranlib-15
export STRIP=llvm-strip-15
export OBJCOPYY=llvm-objcopy-15
export OBJDUMP=llvm-objdump-15
export READELF=llvm-readelf-15
export C_FLAGS="-O3 -mcpu=native -pipe"
export CXX_FLAGS="-O3 -mcpu=native -pipe"
export LDFLAGS=""

ビルド:

$ cmake -G Ninja \
      -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DLLVM_BINUTILS_INCDIR=/usr/include/ \
      -DBUILD_SHARED_LIBS=OFF \
      -DLLVM_BUILD_LLVM_DYLIB=OFF \
      -DLLVM_CCACHE_BUILD=OFF \
      -DLLVM_ENABLE_LIBCXX=ON \
      -DLLVM_ENABLE_LLD=ON \
      -DLLVM_ENABLE_LTO=Thin \
      -DLLVM_ENABLE_PIC=ON \
      -DLLVM_INSTALL_UTILS=ON \
      -DLLVM_LINK_LLVM_DYLIB=OFF \
      -DLLVM_PARALLEL_COMPILE_JOBS=2 \
      -DLLVM_PARALLEL_LINK_JOBS=1 \
      -DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;cross-project-tests;libclc;lld;polly;pstl" \
      -DLLVM_ENABLE_RUNTIMES="compiler-rt;libc;libcxx;libcxxabi;libunwind" \
      -DLLVM_ENABLE_THREADS=ON \
      -DLLVM_TARGET_ARCH=x86_64 \
      -DLLVM_TARGETS_TO_BUILD=X86 \
      ../llvm
0
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
0
0