【问题标题】:No such file or directory: Cygwin + Gcc没有这样的文件或目录:Cygwin + Gcc
【发布时间】:2014-05-20 23:37:37
【问题描述】:

我需要能够在工作中编译一段最初为基于 Unix 的系统编写的代码。我正在使用 cygwin 和 GNU gcc。每次我尝试运行 make 命令时,程序似乎都可以编译,但是当它到达timing.h时会产生这个错误:

Compiling: timing.c timing.h... timing.c:1:0: warning: -fPIC ignored for target 
(all code is position independent)
 #include "timing.h"
 ^
In file included from timing.c:1:0: 
timing.h:5:26: fatal error: sys/resource.h: No such file or directory
 #include <sys/resource.h>
                          ^
compilation terminated.
timing.h:1:0: warning: -fPIC ignored for target (all code is position independent)
 #include <sys/time.h>
 ^
timing.h:5:26: fatal error: sys/resource.h: No such file or directory
 #include <sys/resource.h>
                          ^
compilation terminated.
make: *** [timing.o] Error 1

根据我的阅读,通常这种错误的原因是由不正确的路径引起的。 Timing.h的内容如下:

#include <sys/time.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/resource.h>

void timing(double* wcTime, double* cpuTime);

让我感到困惑的是,即使文件位于同一目录中,我也只会在尝试包含最后一个文件时收到错误消息。我已确保 $C_INCLUDE_PATH 指向文件所在的位置。

$ echo $C_INCLUDE_PATH
/usr/include/

任何帮助都会很棒。这让我困扰了几天。我正在运行 gcc 版本 4.9.0。

【问题讨论】:

  • 你是否在调用 gcc 的命令中使用了 $C_INCLUDE_PATH?如果您可以包含该命令行,那将有所帮助。
  • 您必须准确查看 makefile 使用什么命令来编译文件。我建议运行“make -n”。通常这会告诉你。我怀疑它正在使用 -nostdinc 选项或其他方式来消除对默认系统目录的搜索。但这只是一个猜测。如果你能得到准确的命令行,你可以添加“-v”作为选项之一,看看 gcc 正在尝试做什么。
  • 据我所知,我正在使用调用 gcc 的包含路径。如果我 grep 似乎找不到的文件,我会得到 $ cygcheck -l cygwin | grep resource.h /usr/include/sys/resource.h 。我用来设置 C_INCLUDE_PATH 的命令是:export C_INCLUDE_PATH=/usr/include/
  • 我也尝试过 -nostdinc 选项。它仍然破裂。

标签: c gcc cygwin gfortran include-path


【解决方案1】:

您的 cygwin /usr/include/sys 目录似乎缺少 resource.h 文件。

我刚刚检查了我的 cygwin 安装,resource.htime.h 都存在于 /usr/include

您可能缺少 cygwin 软件包,或者您的 cygwin 安装可能需要更新。

【讨论】:

  • 这似乎不太可能,因为 sys/resouce.h 是基本系统的一部分。用户可能没有它,但这表明安装已损坏。
  • 我肯定有它认为丢失的文件。
猜你喜欢
  • 2021-05-16
  • 1970-01-01
  • 2021-05-01
  • 1970-01-01
  • 2021-10-31
  • 2014-10-26
  • 1970-01-01
  • 2021-12-13
  • 2012-02-12
相关资源
最近更新 更多