首次使用Ninja构建程序遇build.ninja词法错误,求助排查原因
问题原因及解决办法
核心原因
你遇到的lexing error词法错误,主要有两个问题:
- 规则内变量缩进不符合语法:Ninja要求
rule块中的command等变量必须用**制表符(Tab)**缩进,你用了空格缩进,导致Ninja无法正确解析语法结构。 - 存在无效语法字符:
build hello: link hello.o这一行末尾多了一个反引号`,属于多余的无效字符,干扰了Ninja的词法解析。
另外你的main.c还有一个潜在问题:使用printf但未包含标准输入输出头文件#include <stdio.h>,后续编译时会触发警告或错误,建议一并修正。
修正后的build.ninja文件
rule compile command = gcc -Wall -c $in -o $out rule link command = gcc $in -o $out build hello.o: compile main.c build hello: link hello.o
注意:command前面的缩进必须是单个制表符,不能用空格替代。
修正后的main.c文件
#include <stdio.h> int main() { printf("Hello world\n"); return 0; }
内容的提问来源于stack exchange,提问作者Maha
相关产品推荐
相关产品推荐

