Do you have a C to WASM cross-compiler? C compiled for your native CPU (which is what gcc does by default) cannot be run in the WASM VM, so even if you link it, it won't work.
It doesn't matter that clang supports WASM if you don't use it. If you don't explicitly tell clang to make WASM file, it won't. Your number.o is probably native machine-dependent code that doesn't work with WASM.
You have to add --target=wasm32 to compiler invocation, otherwise you're getting x86 or similar.
Try compiling with the cc crate which handles target settings automatically. gcc itself does not.