【问题标题】:make can't find sys/signal.hmake 找不到 sys/signal.h
【发布时间】:2014-05-01 07:35:37
【问题描述】:

我正在尝试在 MINGW 中安装 m4

./configure正常结束后我尝试make但出现错误。

make[1]: Entering directory `/c/src/autotools/build_m4/src'
gcc -c -DHAVE_CONFIG_H -I.. -I../../m4-1.4/src -I../../m4-1.4/src/../lib  -g -O
../../m4-1.4/src/m4.c
../../m4-1.4/src/m4.c:22:24: fatal error: sys/signal.h: No such file or director
y
 #include <sys/signal.h>
                        ^
compilation terminated.
make[1]: *** [m4.o] Error 1
make[1]: Leaving directory `/c/src/autotools/build_m4/src'
make: *** [all] Error 1

signal.h 在 PATH 环境中设置的\c\mingw\include 中。

我如何知道make signal.h 在哪里?

【问题讨论】:

  • 在大多数 Unix 系统上,文件 /usr/include/signal.h 包含 #include &lt;sys/signal.h&gt;。似乎m4 假设会有一个&lt;sys/signal.h&gt; — 大概没有autoconf 检查它是否存在。这可能是m4 中的错误,也可能是您的设置有问题。你以前能编译程序吗?是否有目录/c/mingw/include/sys(或反斜杠等价物)?如果没有,您可以通过创建一个sys 子目录(如果它丢失)并将signal.h 复制到其中来开始。但对于可能存在的错误,这是一种 hack 解决方法。
  • make 不关心这个包含文件。它的编译器。将适当的 pass 传递给 GCC。
  • @JonathanLeffler mingw not \any\path\with\backslahes 都不是 Linux。
  • 是的,@harper,我知道 MinGW 是适用于 Windows 的最小 GNU。我相信,它旨在提供一个环境,可以在其中编译和运行源自 Unix 的程序。它不是 Unix 或 Linux 的精确复制品,但我相信,如果它被适当地自动配置,它意味着可以相对容易地将代码从 Unix 或 Linux 移植到 Windows。要构建m4,您需要使用自动配置的configure shell 脚本。它应该检测到 MinGW 并做出适当的响应。或者,改用 Cygwin;作为 Unix 代理,它确实非常有效。
  • 正如@Jonathan Leffler 所说,我将signal.h 复制到sys。然后make 运行并正常完成。

标签: c makefile mingw configure m4


【解决方案1】:

将评论转化为答案:

在大多数 Unix 系统上,文件 /usr/include/signal.h 包含 #include &lt;sys/signal.h&gt;。似乎m4 假设会有一个&lt;sys/signal.h&gt; — 大概没有autoconf 检查它是否存在。这可能是m4(的配置过程)中的错误,也可能是您的设置有问题。

您以前是否能够编译其他 GNU 程序?是否有目录/c/mingw/include/sys(或\c\mingw\include\sys)?如果没有,您可以通过在\c\mingw\include(如果缺少)中创建一个sys 子目录并将signal.h 复制到其中来开始。但对于可能存在的错误,这是一种 hack 解决方法。

如果这可行 - 看起来 - 检查您的 MinGW 安装是否正确且是最新的。如果是这样,请将问题报告给m4 的维护人员(电子邮件bug-m4gnu.org),但请查看网站以获取有关如何执行此操作的说明。

考虑删除复制的signal.h,因为它最初并不存在。 OTOH,您将来可能会再次需要它 - 但就个人而言,如果安装正常处于原始状态并且仅在绝对必要时才进行黑客攻击,我会感到更高兴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-19
    • 2020-05-11
    • 1970-01-01
    • 2015-05-31
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    相关资源
    最近更新 更多