我正在尝试使用make实用程序编译大量文件。在运行期间,我多次收到以下错误
<command-line>: error: macro names must be identifiers因为我使用的是-j选项,所以日志显示随机线程的输出。因此,很难确定遇到此错误的实际文件。也不会弹出其他错误。有人能告诉我这个错误到底是什么意思吗?
发布于 2012-07-11 06:03:43
这是来自C预处理器的。通常,当您将-D开关传递给gcc时,会出现这种情况,该开关带有无效的符号或根本没有符号。
根本原因可能是makefile中的一行代码,例如
CFLAGS=-g -D$(DEBUG)或者类似的东西,实际上没有在任何地方定义DEBUG。
发布于 2011-03-28 20:31:06
这不是来自make的错误消息,而是来自预处理器(由make调用)的错误消息。正如其他人所说,运行不带-j选项的make (从头开始,或者在make -j失败之后),以便更清楚地了解错误的根源。
发布于 2011-03-28 14:37:05
并不是所有的Makefile都可以用-j编译。有时,您只需运行make -j几次,项目就会一直构建到最后。而且,一旦-j抛出失败,您可以随时取消它,并尝试使用一个运行中的进程来完成构建。这可以极大地减少尝试调试某些东西时的不可预测性,同时仍然对一些(或者如果你幸运的话,几乎所有)编译使用并行构建作业。
我在追踪make(1)中标识符的构成时遇到了麻烦,但在大多数语言中,限制通常是这样的:“第一个字符必须是a-zA-Z,所有其他字符必须是a-zA-Z0-9_”。我想make(1)的规则也差不多。
https://stackoverflow.com/questions/5455370
复制相似问题