【问题标题】:Cannot compile C code with #include <sys/times.h> in Cygwin无法在 Cygwin 中使用 #include <sys/times.h> 编译 C 代码
【发布时间】:2012-09-26 19:16:46
【问题描述】:

我试图在 Windows 7 中使用 Cygwin 安装/编译 igraph 和 SNAP 等库(还尝试了 MinGW-MSYS),但遇到了一些问题。

我想我已经将问题缩小到./configure给出的这个错误:

checking sys/times.h usability... no
checking sys/times.h presence... no
checking for sys/times.h... no

在 Cygwin 中,/usr/include/sys/times.h 确实存在。我为 MinGW 搜索了这个,似乎 sys/times.h 不适用于 MinGW,因为“POSIX/BSD“times”函数不是 ANSI 标准的一部分,并且在 Mingw32 运行时不存在”。

作为一个实验,我尝试在 Cygwin 中使用 gcc 编译这段 C 代码:

#include <stdio.h>
#include <sys/times.h>

int main (void) 
{

      return 0;
}

这无法编译,错误为sys/times.h no such file or directory。即使我将包含更改为&lt;/usr/include/sys/times.h&gt;&lt;usr/include/sys/times.h&gt;,也会发生这种情况。在 Cygwin 命令中,promot /usr/include/sys/times.h 工作正常。

问题

如何获得 sys/times.h 的可用性和存在性?有我可以安装的包或库吗?

【问题讨论】:

  • @H2CO3 - 致命错误:/usr/include/sys/times.h:没有这样的文件或目录。但我认为 Jason(下)得到了答案。

标签: c cygwin


【解决方案1】:

我遇到了同样的问题。删除文件夹 C:\cygwin64 。重新安装cygwin。选择所有默认值,但是当您进入“选择包”时,请确保一一搜索并选择以下内容: binutils 、 make 、 gcc-g++ 。对于每一个,选择下拉列表并将“跳过”表格更改为最新版本。继续,直到完成安装。从那里开始一切都对我有用。

【讨论】:

    【解决方案2】:

    我发现,这个问题似乎存在一些内在问题,并且 sys/times.h 不应该在 windows 下使用(由于某种原因不支持)。

    正如我还提到的here,它的使用实际上应该从代码中删除以使其编译。

    【讨论】:

    • 感谢分享信息! +1
    【解决方案3】:

    您的代码在我的 Cygwin 上编译没有问题。实际上/usr/include 是gcc 的默认包含搜索路径之一,所以通常gcc 应该能够找到sys/times.h

    也许您使用的是 MinGW 版本的 gcc 而不是 Cygwin gcc?尝试which gcc 以确保它是/usr/bin/gcc,并尝试gcc --version 以确保它不会像mingw32-gcc.exe (GCC) x.x.x 那样显示。

    您也可以尝试编译带有详细输出的 C 文件:

    gcc -v test.c
    

    它显示了 gcc 如何搜索包含文件。如果您使用 Cygwin 的 gcc,/usr/include 应该是搜索路径列表之一。

    【讨论】:

    • which gcc/cygdrive/c/Python27/Scripts/gccgcc -v test.c 表明它在我的 python27 mingw 文件夹中搜索! (?!) 谢谢!我想我们找到了问题所在。如何让 Cygwin 使用正确的版本?
    • 查看您的 PATH 变量:echo $PATH。确保/usr/bin 早于/cygdrive/c/Python27/Scripts。如果没有,您需要修改 Cygwin ~/.bashrc 和/或 Windows PATH 环境变量。最简单的方法可能就是将这一行放在 ~/.bashrc 的顶部:export PATH=/usr/bin:$PATH.
    • 我接受您的回答,因为它发现了问题。我仍在尝试弄清楚如何编辑 $PATH,从我搜索的内容来看,这并不容易,需要一些时间来学习。但是非常感谢您的意见,我被困了这么久。 +1!
    • 谢谢!如果没有您的回答,我永远不会发现我使用 MinGW 编译器而不是 cygwin-gcc。谢谢!
    • @Legendre 通过转到控制面板 > 系统 > 高级系统设置 > 环境变量来编辑 $PATH。在这里您可以编辑任何环境变量,包括 PATH。其实很简单,每个变量就是一串用分号隔开的路径。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2014-09-04
    • 2014-10-17
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多