mingw中编译库出现sys/times.h: No such file or directory的可行解决方法

在mingw中成功编译好了boost库后, 使用别人写的机器学习库BMRM(https://github.com/funkey/bmrm) 编译模型时出现了fatal error: sys/times.h:No such file or directory的错误, 一看,就是sys/times.h这个文件没有...


去mingw的include目录下查看,果然没有times.h这个头文件,只有一个time.h的头文件。 后来在网上查询相关错误, 知道了mingw中本身就没有times.h这个文件, 只有cygwin中有times.h文件。


于是参考WEI_Kun仁兄的方法: http://worldant.blog.sohu.com/83875458.html, 添加times.h到mingw中,并做出一定的配置修改, 具体方法如下: 


times.h的实现在libc.a中, 在cygwin的安装包cygwin-1.5.25-5.tar中找到了libc.a文件放在了mingw的lib文件夹中,并将sys/times.h头文件和其他需要的文件如sys/config.h拷贝到mingw安装文件夹中,需要libc.a , sys/times.h 和 sys/config.h三个文件, 

另外, 还要进行一下修改,因为mingw在include文件夹中有time.h文件定义了clock_t,所以要将拷贝过来的times.h文件要进行以下修改:

将times.h中下述字样中的宏定义

#include <_ansi.h>
#include <machine/types.h>

#ifndef __clock_t_defined
typedef _CLOCK_T_ clock_t;
#define __clock_t_defined
#endif

改为:

#ifndef _CLOCK_T_DEFINED
typedef _CLOCK_T_ clock_t;
#define _CLOCK_T_DEFINED
#endif

成功。

编译可以通过了,可以生成BMRM的训练和预测的二进制文件。 


另外,为了保证程序的稳定性, 最好还是使用cygwin代替mingw. 



### 回答1: 这个错误通常是因为编译器找不到 `wait.h` 头文件,该头文件是用于进程控制的,可能是该头文件没有被安装或路径不正确。 如果你使用的是 Linux 系统,可以尝试安装 `glibc-devel` 或 `libc6-dev` 包,这些包包含了 `wait.h` 头文件。你可以运行以下命令安装: ```bash sudo apt-get install libc6-dev ``` 如果你使用的是 macOS 系统,可以尝试更新 Xcode Command Line Tools,或者安装 Command Line Tools for Xcode,这些工具包含了 `wait.h` 头文件。 如果你使用的是 Windows 系统,可能需要安装 MinGW 或 Cygwin 环境,并将环境变量配置正确。 ### 回答2: [Error] sys/wait.h: No such file or directory 是一个编译错误,常见于在编译程序时找不到 sys/wait.h 文件或目录。 sys/wait.h 文件是一个 C 语言头文件,提供了一些操作进程的函数和宏的声明。当编译器在编译过程遇到 #include <sys/wait.h> 的指令时,会搜索系统的标准是否存在该文件,如果找不到,则会产生该错误。 产生该错误的原因可能有以下几种可能: 1. 缺少必要的编译器或操作系统组件:sys/wait.h 是一个 POSIX 标准文件,如果缺少 POSIX 相关组件,则无法找到该文件。 2. 缺少文件或路径设置错误:在编译时,需要正确指定文件的路径,如果路径设置有误,则编译器无法找到该文件。 3. 头文件不在标准位置:有些编译器或操作系统可能将 sys/wait.h 文件存放在非标准位置,需要手动指定头文件的路径。 解决这个问题的方法是: 1. 确保你的编译器和操作系统都支持 POSIX 标准,如果不支持,则无法找到该文件。 2. 确认 sys/wait.h 文件是否存在于正确的路径,如果没有则需要手动添加或更正路径。 3. 检查编译命令的选项是否正确,包括是否正确链接所需的文件。 4. 如果你的代码不是使用 C 语言编写的,则需要查找与你使用的语言相对应的等效文件。 总之,[Error] sys/wait.h: No such file or directory 错误是由编译器找不到 sys/wait.h 文件导致的。要解决这个问题,需要确认编译器和操作系统是否支持 POSIX 标准,检查文件路径设置以及编译命令选项的正确性。 ### 回答3: 在编译或者运行程序时出现 [Error] sys/wait.h: No such file or directory 错误,通常是因为操作系统上缺少了相应的头文件。 sys/wait.h 是一个C语言的头文件,定义了一些与进程有关的常量、宏和函数的声明。它通常用于等待子进程的状态以及获取子进程的退出状态等操作。在Linux或Unix系统这个头文件应该是存在的,所以如果出现找不到的错误,可能是以下几个问题导致的: 1. 头文件不存在:首先要检查当前系统是否存在 sys/wait.h 文件,可能是文件被删除或者系统安装时没有正确安装相关的头文件。 2. 编译器或操作系统问题:有时候编译器或者操作系统环境可能存在问题,导致无法找到该头文件。可以尝试更新或者重新安装编译器,或者切换到其他操作系统或版本进行测试。 解决这个问题的方法有以下几种: 1. 安装必要的文件:在Linux系统,可以通过安装相应的开发文件来解决,比如可以尝试安装 gcc、glibc-devel、libc-dev等。 2. 检查头文件路径:在编译程序时,可以通过指定头文件的路径来解决问题。可以使用 -I 选项指定头文件的搜索路径,例如 gcc -I /usr/include/your_header_directory your_program.c。 3. 检查编译器和操作系统:如果上面的方法都无效,可以尝试重新安装编译器或者切换到其他系统版本。 总结起来,[Error] sys/wait.h: No such file or directory 错误通常是由于系统缺少相应的头文件或者环境设置问题导致的。通过安装必要的文件、检查头文件路径或者重新安装编译器或操作系统,可以解决这个问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值