免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2378 | 回复: 2
打印 上一主题 下一主题

[网络子系统] Makefile 内核模块 包含非内核头文件该如何修改? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-04-06 16:54 |只看该作者 |倒序浏览
小弟最近根据论坛里的方法编写了一个基于Netfilter 的hook 模块(checkIP.c)。
用的方法基本上是http://bbs.chinaunix.net/thread-1941060-1-1.html 白手起家 大神里面的方法。
但是我的方法略有不同,使用了linux 自带的 正则表达式方法(regex.h 文件在/usr/include 文件夹里面)
本人根据网上的各种说明写了一个Makefile 但是不能正常编译,
Makefile 编写如下:
obj-m :=checkIP.o
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
modules:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
clean:
        rm -rf *.o *~core .*.cmd *.mod.c ./tmp version


每次编译都会出现问题,不能正常编译。
问题如下:
make -C /lib/modules/4.4.0-67-generic/build M=/home/linhos/progect/c++/untitled/modul modules
make[1]: Entering directory '/usr/src/linux-headers-4.4.0-67-generic'
  CC [M]  /home/linhos/progect/c++/untitled/modul/checkIP.o
/home/linhos/progect/c++/untitled/modul/checkIP.c:16:19: fatal error: regex.h: 没有那个文件或目录
compilation terminated.
scripts/Makefile.build:264: recipe for target '/home/linhos/progect/c++/untitled/modul/checkIP.o' failed
make[2]: *** [/home/linhos/progect/c++/untitled/modul/checkIP.o] Error 1
Makefile:1420: recipe for target '_module_/home/linhos/progect/c++/untitled/modul' failed
make[1]: *** [_module_/home/linhos/progect/c++/untitled/modul] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.4.0-67-generic'
Makefile:5: recipe for target 'modules' failed
make: *** [modules] Error 2



跪求各位大神,我的Makefile该怎么写?

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
2 [报告]
发表于 2017-04-06 18:00 |只看该作者
kernel的好像没有regex.h(不知道最近有了没有)

kernel里所有的#include,都是基于楼主Makefile的$KERNELDIR目录,一般不能跳出这个范围之内。

论坛徽章:
1
15-16赛季CBA联赛之新疆
日期:2017-03-09 12:33:45
3 [报告]
发表于 2017-04-07 09:43 |只看该作者
本帖最后由 jeppeter 于 2017-04-07 09:50 编辑

回复 1# linhos

内核是不能直接用库函数的头文件的,这一点一定要记住,因为库文件本身是依赖内核的,但内核不依赖库文件。如果你要在内核中引入REGEX,那得先GOOGLE一下,这个是https://github.com/xnsystems/kpcre
如果你要引用另外的目录,内核中编译中有一个专门的
  1. EXTRA_CFLAGS=-I$(PWD)/inc
复制代码

放在你的MAKEFILE头上就可以了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP