日期:2014-05-16  浏览次数:20897 次

#<linux/delay.h> 关于程序如何找到路径以及包含<linux/delay.h>时遇到的问题
最近开始接触linux,在程序中因为要用到msleep(),所以添加了头文件<linux/delay.h>。但是程序找不到这个头文件,后来google找到了一篇关于程序是如何查找头文件的文章。http://blog.sina.com.cn/s/blog_4d3a41f40101dq82.html然后我再工程配置中写了这样一句话-I /usr/src/kernels/2.6.18-194.el5-x86_64/include    这个是我的<linux/delay.h>所在的目录,我用的是rhel5。但是在编译程序是出现了
/usr/src/kernels/2.6.18-194.el5-x86_64/include/linux/hardirq.h:55:2: 错误:#error PREEMPT_ACTIVE is too low!
/usr/src/kernels/2.6.18-194.el5-x86_64/include/linux/bitops.h: In function ‘int get_bitmask_order(unsigned int)’:
/usr/src/kernels/2.6.18-194.el5-x86_64/include/linux/bitops.h:15: 错误:‘fls’ 在此作用域中尚未声明
等问题(问题较多不一一列举)。为什么会有这样的问题呢?大家在包含<linux/delay.h>时遇到过这样的问题吗?
Linux rhel msleep linux/delay.h

------解决方案--------------------
这是编译应用程序?
linux系统调用和c库没有定义msleep吧
编译应用程序使用内核的头文件,报错是难免的
建议使用usleep或者自己定义一个msleep
------解决方案--------------------
别人或许是编译内核模块或者已经重定义过msleep了