arocc
1.0.0
AC 编译器的目标是提供快速编译和低内存使用以及良好的诊断。
Aro 作为替代 C 前端包含在 Zig 编译器中,用于translate-c
并最终通过首先将 C 文件转换为 Zig 来编译 C 文件。 Aro 是在 https://github.com/Vexu/arocc 中开发的,Zig 依赖项会在需要时从那里更新。
目前,大多数标准 C 的支持最高可达 C23,以及来自 GNU、MSVC 和 Clang 的许多常见扩展
x86-64 Linux 支持基本代码生成,并且可以生成有效的 hello world:
$ cat hello.c
extern int printf(const char *restrict fmt, ...);
int main(void) {
printf("Hello, world!n");
return 0;
}
$ zig build && ./zig-out/bin/arocc hello.c -o hello
$ ./hello
Hello, world!
以下假设您的包有一个build.zig.zon
文件。
zig fetch --save git+https://github.com/Vexu/arocc.git
将以下内容添加到您的build.zig
中:
const aro = b . dependency ( "aro" , .{
. target = target ,
. optimize = optimize ,
});
exe . root_module . addImport ( "aro" , aro . module ( "aro" ));
// Optional; this will make aro's builtin includes (the `include` directory of this repo) available to `Toolchain`
b . installDirectory (.{
. source_dir = aro . path ( "include" ),
. install_dir = .prefix ,
. install_subdir = "include" ,
});
现在你可以做
const aro = @import ( "aro" );
在你的 Zig 代码中。