c - Ubuntu 用法错误

标签 c linux ubuntu build rusage

<分区>

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

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

据我所知,我所有的路径看起来都是正确的。我什至查看了每个系统上的 time.h 和 resource.h 系统文件(CentOS 可以工作,Ubuntu 不能工作)。似乎有对实际定义 usage 的 wait.h 文件的引用,完全一样。

在我的 Ubuntu 环境中我还可能缺少什么?

编辑:添加更多类似 MCVE 的细节...

我的构建因以下错误而停止:

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

文件中的那一行很简单:

struct rusage rusage

所需的包含也都在该文件中( <sys/time.h><sys/wait.h> 等)

不确定在这种情况下我还能提供什么...

最佳答案

getrusage 的手册页在 CentOS 6 和 Ubuntu 14.04 上都说应该包括 <sys/time.h><sys/resource.h> .

您提到您包括 <sys/wait.h> .它有一个前向声明 struct rusage;这样 wait3 的声明和 wait4将是有效的,但该前向声明不足以让您声明 rusage 类型的结构.

在 CentOS 6 上一切正常,因为 CentOS 6 的 wait.h包含一行 #include <sys/resource.h> , 和 resource.h是否完全声明 struct rusage , 但 Ubuntu 14.04 的 wait.h不包含 #include <sys/resource.h>行。

关于c - Ubuntu 用法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34517362/

相关文章:

c - 不使用循环提取矩阵的多个部分

c - GTK Hello World 提示 undefined reference

linux - 寻求在 Windows 和 Linux 中都可以工作的 VCS

linux - 多字符串命令输出只保存一串

mysql - 将 root 用户添加到 mysql wheel

apache - 如何在 Ubuntu 上建立本地家庭网络

mysql - 获取mysql命令的返回码

c - 11线程程序段错误

c++ - OpenGL ES 2 glGetActiveAtrib 和非 float

python - 使用 Python 记录所有错误和标准输出