2010-12-18 108 views
1

我正在尝试编写一个使用函数nanosleep()的模块。Makefile - 包含库

当我的make文件运行时,它通过执行更改编译库: make -C /lib/modules/2.6.18-128.4.1.el5/build M =/workspace/lcd-winstar-0.0.1模块

nanosleep声明在/ usr/include中,所以我的makefile无法找到它。 我应该将哪些行添加到我的makefile以包含此位置以及?????

感谢

+0

'nanosleep'是POSIX系统的标准库的一部分。如果没有找到它,那么你的构建环境有些问题。 – 2010-12-18 17:55:06

+0

为了将来的参考,值得一提的是,如果你可以在抱怨make不正确之前执行所需的命令,因为这会告诉你问题是在你了解构建步骤还是与make有关。 – dmckee 2010-12-18 17:58:05

+0

我无法从外壳执行测试功能。让我再次解释..用gcc编译器id熟悉函数usleep和nanosleep。但因为我需要使用“make -C/src/kerneles/$(uname -r)/ include”来创建文件,所以它不会识别其他函数,例如在... 中声明的函数有两次。 h文件但有很多不同的代码: 1. /usr/src/kernels/2.6.18-128.4.1.el5-i686/include/linux/time.h 2. /usr/include/time.h 想要函数声明只在第二个.. – azulay7 2010-12-20 11:53:56

回答

3

-I DIR
添加目录dir到要搜索 头文件的目录列表。在标准 系统包括目录之前搜索由-I 命名的目录。如果 目录dir是一个标准的系统 包括目录,选择是 忽略,以确保在系统目录 和系统的特殊待遇默认 搜索顺序 头没有被击败。

& &

-Ldir 目录dir添加到目录列表中要搜索-l

+0

谢谢你的答案..我已经试过这样做..仍然没有工作。我的Makefile在下面的评论..: 我不知道为什么在文件系统中有很多“time.h”..导致编译器如何选择两个文件,如果两个库都包含在内? – azulay7 2010-12-18 20:19:05

+0

make -C/lib/modules/$(shell uname -r)/ build M = $(PWD)modules -I/usr/include – azulay7 2010-12-18 20:24:18

+0

谢谢你的回答..虽然我仍然在为之努力.. 我的代码不认识其他联系人,它首先需要kenel liabries来编译模块。所以我必须做-C并更改编译库......但是它仍然不能识别-I的其他联系人。 – azulay7 2010-12-20 11:08:34