rust-bindgen icon indicating copy to clipboard operation
rust-bindgen copied to clipboard

--target=wasm32-unknown-unknown: 'stdio.h' file not found

Open ahaoboy opened this issue 1 year ago • 5 comments

Input C/C++ Header

#include <stdio.h>

Bindgen Invocation

 bindgen ./test.h -o test.rs  -- --target=wasm32-unknown-unknown

stdlib.h, inttypes.h, string.h, assert.h also have the same problem

Actual Results

./test.h:1:10: fatal error: 'stdio.h' file not found
panicked at bindgen-cli/main.rs:52:36:
Unable to generate bindings: ClangDiagnostic("./test.h:1:10: fatal error: 'stdio.h' file not found\n")

Expected Results

No errors and compiled successfully

ahaoboy avatar May 03 '24 09:05 ahaoboy

you need to tell clang where to find such headers for that platform.

pvdrz avatar May 03 '24 21:05 pvdrz

you need to tell clang where to find such headers for that platform.

Can you explain this in more detail? How do I use the parameters passed to clang, because I don't know where the header files are exactly, and using other targets, it doesn't give me an error, is it because the environment is missing some libraries?

 bindgen ./test.h -o test.rs  -- --target=x86_64-unknown-linux-gnu

ahaoboy avatar May 04 '24 02:05 ahaoboy

Yes, clang cannot find any stdio.h header for the wasm32-unknown-unknown target in the directories where system headers usually are. So you need to get the right toolchain for that target or use a target for which you actually have the headers.

I haven't ever cross compiled to wasm but I found this post stating that wasm32-unknown-unknown requires a special toolchain.

pvdrz avatar May 09 '24 17:05 pvdrz

I found this post stating that wasm32-unknown-unknown requires a special toolchain.

This shows that many people have encountered the same problem, but we must use some cumbersome methods to bypass this problem. Using new toolchains such as zig-cc will increase the complexity. And this blog seems to be released on 2023-01-01, we can only look forward to subsequent support.

ahaoboy avatar May 10 '24 15:05 ahaoboy

I don't think we can do anything from the bindgen side to alleviate this.

pvdrz avatar May 14 '24 17:05 pvdrz