C compiler running on Linux or MacOS.
$ make
Generated files:
xcc
: Compiler entrycpp
: Preprocessorcc1
: C compileras
: Assemblerld
: Linker$ ./xcc -o hello examples/hello.c
$ ./hello
Hello, world!
-o <filename>
: Set output filename (default: a.out
)-I <path>
: Add include path-D <label>(=value)
: Define macro-S
: Output assembly code-E
: Preprocess only-c
: Output object file-nodefaultlibs
: Ignore libc-nostdlib
: Ignore libc and crt0Compile C to WebAssembly/WASI binary.
llvm-ar
$ npm ci
$ make wcc
Generated files:
wcc
: C compiler (including preprocessor, and output .wasm directly)Compile:
$ ./wcc -o hello.wasm examples/hello.c
Command line options:
-o <filename>
: Set output filename (default: a.wasm
)-I <path>
: Add include path-D <label>(=value)
: Define macro-c
: Output object file--entry-point=func_name
: Specify entry point (default: _start
)-e func_name,...
: Export function names (comma separated)--stack-size=<size>
: Set stack size (default: 8192)-nodefaultlibs
: Ignore libc-nostdlib
: Ignore libc and crt0--verbose
: Output debug information$ ./tool/runwasi hello.wasm
Hello, world!
You can also use WASM/WASI runtime (Wasmtime, Wasmer, etc.), too.
goto
statement