6

我一直在尝试使用 Cygwin 和 MinGW 在 Windows 7 中安装/编译 C 库。但是,我在以下期间遇到了这样的错误make

sys/resource.h: No such file or directory
sys/times.h: No such file or directory

我以前认为这可能是特定库的问题,并在这里询问:Various questions installed igraph in Visual Studio 2010 and Cygwin/MinGW ("sys/time.h not found"),但在遇到不同库的相同错误后,我认为问题出在我的头上。

试图

cygwin/usr/include/sys/times.h并且cygwin/usr/include/sys/resource.h存在。在获得有关符号链接的建议后,我曾经ln -s /usr/include/sys sys确保它sys/times.h有效。

我去看make了特定库(igraph)的输出。它说它进入了一个“src”文件夹。所以,我去了 src 文件夹并做了同样的事情:ln -s /usr/include/sys sys并确保它sys/times.h也在 src 文件夹中工作。

但是,我仍然得到:

fatal error: sys/times.h: No such file or directory

问题

如何设置“路径”make以在 /usr/include/sys 文件夹中查找“sys/times.h”或其他文件?我在这里想念什么?

附言

请多多包涵,因为我通常是 Windows 用户,不熟悉 Linux 术语。

4

4 回答 4

4

经过多方调查,问题原来是这样的:

  1. MinGW 没有 sys/times.h。
  2. Cygwin 有,但我的 Cyqwin 使用的是我的 python 目录中的 gcc,这是 MinGW 的 gcc。

这是在尝试解决此处的另一个问题时发现的:

无法在 Cygwin 中使用 #include <sys/times.h> 编译 C 代码

所以事实证明,我的问题与包含路径或制作符号链接无关,而是 gcc 版本/类型错误。这个事实让我无法理解,因为我正在运行 Cygwin 的全新安装,并且不知道它会在我的 Python 文件夹中自动使用 MinGW 的 gcc。

于 2012-10-06T10:09:30.113 回答
1

http://mail.kde.org/pipermail/kde-windows/2006-May/000194.html ,正如他们所说,即使将times.h放在那里,mingw也可能无法实现其功能

运行 ./configure 时,我得到了这个(很难注意到)

所以首先尝试复制 times.h 然后使用 ./configure 看看这个错误是否不存在

于 2012-10-05T13:51:26.527 回答
1

使用 minGW 构建 libigraph 而没有“sys/times.h”

这对于所有构建“igraph”并且不想用“cygwin”而是用“mingw”创建它可能很有趣。

在我的“msys / mingw”环境中,我的“源代码”在“C:\msys\1.0\src”目录中。
igraph 目录 == C:\msys\1.0\src\igraph-0.6

  • 运行 c:\msys\1.0\msys.bat
  • cd 到顶部根cd /
  • cd to igraph cd usr/src/igraph-0.6
    注意:C:\msys\1.0\中没有usr文件夹。注意不要创建usr文件夹!
  • 输入./configure现在 msys shell 看起来像

管理员@drserver-p /usr/src/igraph-0.6
$ ./configure

  • 点击“输入”

这需要一段时间。

文件的变化。

  • 转到 igraph-0.6\src
  • 使用 Notepadd++ 或其他编辑器打开“Makefile”
    转到第 832 行或搜索libf2c_la_CFLAGS =在 libf2c_la_CFLAGS =之后
    放置-DUSE_CLOCK =
    现在看起来像libf2c_la_CFLAGS = -DUSE_CLOCK -DSkip_f2c_Undefs ...。
  • 打开igraph-0.6\src\f2c\uninit.c
  • 转到第 182 行或搜索_control87(EM_DENORMAL
    注释此行/* _control87(EM_DENORMAL ..... */
  • 打开igraph-0.6\src\f2c\s_paus.c
    转到第 84 行或搜索pause();
    注释这一行/* pause(); */

  • 输入make现在 msys shell 看起来像

管理员@drserver-p /usr/src/igraph-0.6
$ make

  • 点击“输入”

如果有效,大约需要 1 小时!

于 2012-10-07T05:27:02.140 回答
0

你应该检查你的makefile,CFLAGS/CPPFLAGS 有-DWIN32 -D_WINDOWS for windows。换句话说,你永远不应该访问 windows 上的 sys/times 代码分支。

于 2018-08-10T10:37:48.317 回答