【发布时间】: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