I'm trying to generate a static library for wasm32-wasi that I can statically link to other code for the same platform. My code is here. It requires LLVM 10. If you run
build.sh you'll see something like
$ ./build.sh + rm -rf target '*.o' '*.wasm' '*.wat' + cargo build --target wasm32-wasi --release Compiling wasi v0.10.0+wasi-snapshot-preview1 Compiling rs_static_lib v0.1.0 (/home/omer/wasm_test/rs_static_lib) Finished release [optimized] target(s) in 0.37s + clang --target=wasm32-wasi main.c -fpic -c -o main.o + wasm-ld main.o target/wasm32-wasi/release/librs_static_lib.a -o main.wasm wasm-ld: error: target/wasm32-wasi/release/librs_static_lib.a(wasi-e811237f932d0d37.wasi.6lr25g8y-cgu.0.rcgu.o): undefined symbol: wasi::lib_generated::wasi_snapshot_preview1::fd_write::h2c481bab96092d8f
I think the problem is that the archive file does not include the
wasi library, but I have no idea how to include that. I also tried using this for linking:
wasm-ld -L target/wasm32-wasi/release -lrs_static_lib main.o -o main.wasm
which fails the same way.
How do I link the Rust library (including all of its dependencies) with other programs?