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

本文详细介绍了如何在MINGW环境中解决缺失times.h文件导致的编译错误,通过添加times.h文件到MINGW的lib文件夹,并对相关头文件进行修改,最终成功编译并生成BMRM的训练和预测二进制文件。同时建议使用CYGWIN替代MINGW以提高程序稳定性。
摘要由CSDN通过智能技术生成

在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. 



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值