Ubuntu rusage错误

我正在将一些非常古老(和庞大的代码)代码从CentOS 6移植到Ubuntu 14.04。 注意,我已经安装了预期的旧版gcc,固定链接器引用等。

我的构建尝试正在进行中,但我坚持一件事。 有一个C文件试图创建一个rusage类型的结构,但Ubuntu环境给我以下错误: error: storage size of 'rusage' isn't known

据我所知,我的所有路径看起来都是正确的。 我甚至查看了每个系统上的time.h和resource.h系统文件(CentOS在哪里工作,Ubuntu在哪里不起作用)。 似乎有一个wait.h文件的引用,其中rusage实际定义,只是相同。

在我的Ubuntu环境中还有什么可能遗漏的?

编辑:添加更多MCVE-ish详细信息……

我的构建停止,出现以下错误:

vmodem.c:6747: error: storage size of 'rusage' isn't known

文件中的那一行很简单:

 struct rusage rusage 

所需的包含也在该文件中( 等)

不知道在这种情况下我还能提供什么……

CentOS 6和Ubuntu 14.04上的getrusage手册页说,应该包括

您提到包含 。 它有一个前向声明struct rusage; 所以wait3wait4的声明是有效的,但是这个前向声明不足以让你声明一个rusage类型的结构。

事情在CentOS 6上工作,因为CentOS 6的wait.h包含一行#include ,而resource.h完全声明了struct rusage ,但是Ubuntu 14.04的wait.h不包含#include 行。

感谢coredump和Eugene Sh。 提示……添加#include 就是诀窍。

它一定是在CentOS中运行但不是Ubuntu的东西。 无论如何,简单地包含资源头文件不应该伤害任何东西。