【发布时间】: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 <sys/signal.h>。似乎m4假设会有一个<sys/signal.h>— 大概没有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,您需要使用自动配置的configureshell 脚本。它应该检测到 MinGW 并做出适当的响应。或者,改用 Cygwin;作为 Unix 代理,它确实非常有效。 -
正如@Jonathan Leffler 所说,我将
signal.h复制到sys。然后make运行并正常完成。
标签: c makefile mingw configure m4