Open5
WasmLinux: (efault)p0 の謎を追いたい
謎のIssueが来た
Ubuntu 22.04 のclangでWasmLinuxをビルドすると起動しないイメージができるらしい。コンパイラがバグってることはそんなにないので、これはたぶんスタック破壊バグがまだ残っている。
LLVM 18をインストールする
Ubuntu 22.04自体にはLLVM 18のパッケージは無いようだ。というわけでたぶん公式パッケージだろう。
% docker -it ubuntu:22.04
とりあえずDockerの公式イメージからUbuntu:22.04を使う。
# apt install wget software-properties-common
# wget https://apt.llvm.org/llvm.sh
# chmod +x llvm.sh
# ./llvm.sh 18 all
レポートされたバージョンをインストールできた。
# clang-18 -v
Ubuntu clang version 18.1.8 (++20240731024944+3b5b5c1ec4a3-1~exp1~20240731145000.144)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
再現環境の構築
# apt update
# apt install build-essential ninja-build cmake wget software-properties-common flex bison bc
# wget https://apt.llvm.org/llvm.sh
# chmod +x llvm.sh
# ./llvm.sh 18 all
wabtは普通にインストールしてみる:
# cmake -S wabt -B build.wabt -G Ninja -DCMAKE_INSTALL_PREFIX=$PWD/host
# ninja -C build.wabt
# ninja -C build.wabt install
clangは ln
でごまかす:
# ln -s /usr/bin/clang-18 $PWD/host/bin/clang
# ln -s /usr/bin/wasm-ld-18 $PWD/host/bin/wasm-ld
# ln -s /usr/bin/llvm-ar-18 $PWD/host/bin/llvm-ar
# ln -s /usr/bin/llvm-nm-18 $PWD/host/bin/llvm-nm
# ln -s /usr/bin/llvm-ranlib-18 $PWD/host/bin/llvm-ranlib
... ここまでやってから気付いたけど、Ubuntu 22.04のCMakeが古すぎる。。これドキュメントした方が良いな。。
# wget https://github.com/Kitware/CMake/releases/download/v3.30.5/cmake-3.30.5-linux-x86_64.sh
# ...
olddefconfig
するの忘れてた
これやらないと .config
とtoolchainがあってないときに設定が消えてしまう。
再現しなかった
とりあえず返信 https://github.com/okuoku/wasmlinux-project/issues/7#issuecomment-2424680332 。こういうの再現しないと辛いんだよなぁ。。