# 关于程序如何找到路径以及包含时遇到的问题

时间:2021-10-12 23:44:22
最近开始接触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>时遇到过这样的问题吗?

3 个解决方案

#1


这是编译应用程序?
linux系统调用和c库没有定义msleep吧
编译应用程序使用内核的头文件,报错是难免的
建议使用usleep或者自己定义一个msleep

#2


恩,我后来改用了usleep,参数默认的乘上1000。这样就不用包内核的头文件了,也没错了。但是还是奇怪为什么内核里的头文件不能用呢?我看别人的程序都是<linux/delay.h>这样包的,然后使用里面的msleep的啊!

#3


别人或许是编译内核模块或者已经重定义过msleep了

#1


这是编译应用程序?
linux系统调用和c库没有定义msleep吧
编译应用程序使用内核的头文件,报错是难免的
建议使用usleep或者自己定义一个msleep

#2


恩,我后来改用了usleep,参数默认的乘上1000。这样就不用包内核的头文件了,也没错了。但是还是奇怪为什么内核里的头文件不能用呢?我看别人的程序都是<linux/delay.h>这样包的,然后使用里面的msleep的啊!

#3


别人或许是编译内核模块或者已经重定义过msleep了