编译器将打印版本但在构建时冻结

问题描述

我正在尝试关注this tutorial。我从2016年开始在MacOS Catalina 10.15.3上的13“ Macbook pro上运行。我从here下载了适用于Mac的最新版本。我解压缩了文件,并移动了Zig可执行文件(但未移动其余部分)文件夹的内容)到usr / local / bin,因此我可以从任何地方调用它。现在,无论在哪里运行,都可以调用zig version并按预期获取输出0.6.0+352976ed2。 ,每当我尝试使用zig run main.zigzig build main.zig之类的东西时,它都会冻结并且不执行任何操作。

现在,该教程确实说它不支持zig 0.6.0。但是我以为这仍然可行,并且本教程在说它不支持0.6.0时,更多地指的是诸如更改打印方式之类的内容。显然,这可能是一个错误的假设,但我不知道为什么这行不通。而且由于zig年轻,缺少入门教程,所以我不知道该去哪里找。

以前我已经使用过zig 0.6.0来进行自制软件,但是由于我潜在地希望在线下贡献或尝试编译器的实验分支,因此我希望能够运行任意zig可执行文件。

解决方法

我能够解决我的问题。首先,我从usr/local/bin中删除了zig以及与原始下载相关的其他文件。然后,我下载了Mac的0.6.0版本,而不是下载主版本。我解压缩了。我尝试直接从那里进行编译,并且可以正常工作。但是,当我将其移至usr/local/bin时,它给了我错误,

Unable to find zig lib directory

因此,很明显,可执行文件必须与文件夹的其余内容(我替换了可执行文件)一起存在。

我在主目录中创建了一个名为tools的新目录。我将解压缩的文件夹(称为zig-macos-x86_64-0.6.0)移动到了tools目录中。然后(从主目录)使用此命令在我的bin中创建了到二进制文件的符号链接。

ln -s tools/zig-macos-x86_64-0.6.0/zig ../../usr/local/bin/zig

我退出并重新启动了终端。现在zig version产生0.6.0,并且在编译程序main.zig时,

const std = @import("std");

pub fn main() void {
    std.debug.warn("Hello,{}!\n",.{"World"});
}

使用命令zig run main.zig,我得到了正确的输出

Hello,World!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...