首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><command-line>:错误:在makefiles中

<command-line>:错误:在makefiles中
EN

Stack Overflow用户
提问于 2011-03-28 14:26:38
回答 3查看 3.9K关注 0票数 2

我正在尝试使用make实用程序编译大量文件。在运行期间,我多次收到以下错误

代码语言:javascript
复制
<command-line>: error: macro names must be identifiers

因为我使用的是-j选项,所以日志显示随机线程的输出。因此,很难确定遇到此错误的实际文件。也不会弹出其他错误。有人能告诉我这个错误到底是什么意思吗?

EN

回答 3

Stack Overflow用户

发布于 2012-07-11 06:03:43

这是来自C预处理器的。通常,当您将-D开关传递给gcc时,会出现这种情况,该开关带有无效的符号或根本没有符号。

根本原因可能是makefile中的一行代码,例如

代码语言:javascript
复制
CFLAGS=-g -D$(DEBUG)

或者类似的东西,实际上没有在任何地方定义DEBUG。

票数 3
EN

Stack Overflow用户

发布于 2011-03-28 20:31:06

这不是来自make的错误消息,而是来自预处理器(由make调用)的错误消息。正如其他人所说,运行不带-j选项的make (从头开始,或者在make -j失败之后),以便更清楚地了解错误的根源。

票数 2
EN

Stack Overflow用户

发布于 2011-03-28 14:37:05

并不是所有的Makefile都可以用-j编译。有时,您只需运行make -j几次,项目就会一直构建到最后。而且,一旦-j抛出失败,您可以随时取消它,并尝试使用一个运行中的进程来完成构建。这可以极大地减少尝试调试某些东西时的不可预测性,同时仍然对一些(或者如果你幸运的话,几乎所有)编译使用并行构建作业。

我在追踪make(1)中标识符的构成时遇到了麻烦,但在大多数语言中,限制通常是这样的:“第一个字符必须是a-zA-Z,所有其他字符必须是a-zA-Z0-9_”。我想make(1)的规则也差不多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5455370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档