我正在将一些非常古老(和庞大的代码)代码从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;
所以wait3
和wait4
的声明是有效的,但是这个前向声明不足以让你声明一个rusage
类型的结构。
事情在CentOS 6上工作,因为CentOS 6的wait.h
包含一行#include
,而resource.h
完全声明了struct rusage
,但是Ubuntu 14.04的wait.h
不包含#include
行。
感谢coredump和Eugene Sh。 提示……添加#include
就是诀窍。
它一定是在CentOS中运行但不是Ubuntu的东西。 无论如何,简单地包含资源头文件不应该伤害任何东西。
以上就是c/c++开发分享Ubuntu rusage错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/519372.html