【问题标题】:make: *** [ ] Error 1 error [duplicate]make: *** [] 错误 1 ​​错误 [重复]
【发布时间】:2011-07-28 23:28:23
【问题描述】:

我正在尝试在 gcc 上编译 Pro*C 文件,但出现此错误:

make: *** [MedLib_x.o] Error 1

这是 make 打印的命令:

   /usr/bin/gcc -g -fPIC -m64 -DSS_64BIT_SERVER  -I/home/med/src/common -
I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/demo 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/rdbms/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public 
-I/u01/app/oradb11r2/product/11.2.0/dbhome_3/xdk/include INCLUDE=/u01/app/oradb11r2/product/11.2.0/dbhome_3/precomp/public -lnapi -ltabs -c MedLib_x.c

请帮助我为什么会出现这个错误?虽然还创建了目标文件。

【问题讨论】:

  • 如果错误消息中没有更多详细信息,很难知道哪里出了问题
  • 您引用的错误必须在 GCC 的错误之前出现,请同时引用。
  • 感谢您的回复。您还需要什么详细信息,请解释一下?
  • 在 Golang 中针对特定集成测试时遇到此错误

标签: gcc makefile


【解决方案1】:

来自 GNU Make 错误附录,如您所见,这不是 Make 错误,而是来自 gcc 的错误。

‘[foo] 错误 NN’ ‘[foo] 信号描述’ 这些错误根本不是真正的错误。它们意味着作为配方的一部分调用 make 的程序返回了一个非 0 错误代码('Error NN'),这使得 make 解释为失败,或者它以某种其他异常方式退出(带有某种类型的信号)。请参阅食谱中的错误。 如果没有 *** 附加到消息,则子进程失败,但 makefile 中的规则以 - 特殊字符为前缀,因此 make 忽略了该错误。

所以为了解决问题,需要来自 gcc 的错误信息。将 Makefile 中的命令直接粘贴到命令行,看看 gcc 是怎么说的。 For more details on Make errors click here.

【讨论】:

  • 感谢您的回复。我无法链接错误和页面上写的关于 Make errors 的内容。
  • 我的问题是 make 试图运行我没有的 cmd (numactlin my particular case)。所以,我运行了sudo apt install numactl,现在make cmd 工作正常!
【解决方案2】:

我得到了同样的东西。运行“make”,只显示这条消息就失败了。

% make
make: *** [all] Error 1

这是由规则中的命令以非零退出状态终止引起的。例如。想象以下(愚蠢的)Makefile

all:
       @false
       echo "hello"

由于false 以退出状态 1 终止,这将失败(不打印“hello”)并显示上述消息。

在我的例子中,我试图聪明一点,在处理文件之前对其进行备份(以便我可以将新生成的文件与以前的文件进行比较)。我通过在我的 Make 规则中添加如下所示的规则来做到这一点:

@[ -e $@ ] && mv $@ $@.bak

...没有意识到如果目标文件不存在,那么上述构造将退出(不运行mv 命令),退出状态为 1,因此该规则中的任何后续命令都无法运行。将我的错误行重写为:

@if [ -e $@ ]; then mv $@ $@.bak; fi

解决了我的问题。

【讨论】:

  • 另一个选项是@[ ! -e $@] || mv $@ $@.bak
  • 绝对! @[ ! -e $@] || mv $@ $@.bak 也可以!但是,仅仅试图超越双重否定就让我的大脑受伤,所以出于对我的程序员同事(即很可能是我自己,一年后)的考虑,我更喜欢使用稍长的if 语句来代替。跨度>
【解决方案3】:

有时您会得到大量编译器输出,其中包含许多警告且没有行 输出说 “错误:你在这里做错了什么” 但还是有错误。这方面的一个例子是缺少头文件 - 编译器说“没有这样的文件”而不是“错误:没有这样的文件”,然后它在一段时间后以非零退出代码退出(可能在更多警告之后)。在这些情况下,Make 会发出错误消息!

【讨论】:

    【解决方案4】:

    在我的例子中,有一个未初始化的静态变量。当我初始化它时,错误被删除。我不知道它背后的逻辑,但对我有用。我知道这有点晚了,但其他有类似问题的人可能会得到一些帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多