How to static link c lib to wasm?

i got it. for macos:

  1. brew install llvm
  2. /usr/local/opt/llvm/bin/clang --target=wasm32 ...
  3. /usr/local/opt/llvm/bin/llvm-ar rcs libnumber.a number.o
  4. rustc -L . -l number --target wasm32-unknown-unknown ./src/main.rs -o a.out.wasm

or use cargo with cc creat. build.rs:

fn main() {
	let host = std::env::var("HOST").unwrap();
	let target = std::env::var("TARGET").unwrap();

	if target.contains("wasm32") {
		if host.contains("darwin") {
			// brew install llvm
			std::env::set_var("CC", "/usr/local/opt/llvm/bin/clang");
			std::env::set_var("AR", "/usr/local/opt/llvm/bin/llvm-ar");
		}
	}

	cc::Build::new()
		.include("src/vendor")
		.file("src/vendor/number.c")
		.flag("-Ofast")
		.compile("number")
}

thx @kornel :+1:

2 Likes