linux 模块化编译,linux里模块编译的问题
我想试一下使用往netfliter上某个hook点装个钩子函数上去,然后在网上找了一下相关的文章,然后把网上的代码大致改了一下,如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
static unsigned int myhook_func(unsigned int hooknum, struct sk_buff **skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *))
{
return NF_DROP;
}
static struct nf_hook_ops nfho={
.hook = myhook_func,
.owner = THIS_MODULE,
.pf = PF_INET,
.hooknum = NF_IP_LOCAL_OUT,
.priority = NF_IP_PRI_FIRST,
};
static int __init myhook_init(void)
{
return nf_register_hook(&nfho);
}
static void __exit myhook_fini(void)
{
nf_unregister_hook(&nfho);
}
module_init(myhook_init);
module_exit(myhook_fini);
/******************************************************/
Makefile如下:
ifneq ($(KERNELRELEASE),)
mymodule-objs:=test0.c
obj-m += test0.o
else
PWD := $(shell pwd)
KVER := $(shell uname -r)
KDIR := /lib/modules/$(KVER)/build
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
endif
/**********************************************/
make以后的结果如下:
make -C /lib/modules/3.16.0-23-generic/build M=/home/author/workspace/TestNF modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-23-generic'
CC [M] /home/author/workspace/TestNF/test0.o
/home/author/workspace/TestNF/test0.c:17:9: warning: initialization from incompatible pointer type
.hook = myhook_func,
^
/home/author/workspace/TestNF/test0.c:17:9: warning: (near initialization for ‘nfho.hook’)
/home/author/workspace/TestNF/test0.c:20:27: error: ‘NF_IP_LOCAL_OUT’ undeclared here (not in a function)
.hooknum = NF_IP_LOCAL_OUT,
^
scripts/Makefile.build:263: recipe for target '/home/author/workspace/TestNF/test0.o' failed
make[2]: *** [/home/sineatos/workspace/TestNF/test0.o] Error 1
Makefile:1345: recipe for target '_module_/home/author/workspace/TestNF' failed
make[1]: *** [_module_/home/author/workspace/TestNF] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-23-generic'
Makefile:11: recipe for target 'all' failed
make: *** [all] Error 2
请问究竟是什么问题?
需要怎么解决?
linux 模块化编译,linux里模块编译的问题相关推荐
- android camera2 qcom,lineage编译环境里,编译QCamera2的技术总结
在lineage编译环境里,编译QCamera2 源码路径 hardware/qcom/camera/QCamera2 编译命令 mmm hardware/qcom/camera/QCamera2 编 ...
- Linux学习-额外(单一)核心模块编译
编译前注意事项 由于我们的核心原本就有提供很多的核心工具给硬件开发商来使用, 而硬件开发商也需要针对核心 所提供的功能来设计他们的驱动程序模块,因此, 我们如果想要自行使用硬件开发商所提供的模块 来进 ...
- linux模块化机制,Linux模块化机制和module_init
> 引子:模块化机制优点 模块化机制(module)是Linux系统的一大创新,是Linux驱动开发和运行的基础(当然,module并不仅仅是支撑驱动).其优点在于: 1.在系统运行动态加载模块 ...
- Android nfc编译,【Android编译】各个模块编译方法
一.如何编译出vendor.img 1. 首先找到产品对应BoardConfig.mk 路径:LINUX/android/ device/项目/产品/BoardConfig.mk 2. 修改Board ...
- 编译kernel外部模块
编译kernel外部模块 一.说明 二.编译外部模块 条件 语法 三.编译脚本 编写脚本 脚本的几种实现方式 四.编译包含头文件 kernel头文件放置规则 不同情况,头文件的使用 五.编译安装目录( ...
- linux 模块化编译,手把手教Linux驱动1-模块化编程 module
大家好,从本篇起,一口君将手把手教大家如何来学习Linux驱动,预计会有20篇关于驱动初级部分知识点.本专题会一直更新,有任何疑问,可以留言或者加我微信. Linux的开发者,遍布世界各地,他们相互之 ...
- Linux 2.6内核的编译步骤及模块的动态加载
本文是基于2.6的内核,也建议各位可以先看一下<Linux内核设计与实现(第二版)>作为一个基础知识的铺垫.当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块 ...
- 简单实例讲解linux的module模块编译步骤
简单实例讲解linux的module模块编译步骤 (2014-10-24 10:19:17) 标签: module linux 分类:Linux/Unix 本文将直接了当的带你进入linux的模块编译 ...
- java 位运算取8位_Java 9 AOT 试用:仅支持 64 位 Linux和java.base 模块编译
Java 9 引入了 aot 编译方式,能够将 class 文件直接编译成可执行二进制文件.目前 Java 9 的 early access 版本已经提供了编译工具,让我们来看看它的功能吧. 注意:按 ...
最新文章
- app调html页面,app界面管理(风格色调).html
- 广播延时大约多久_在长沙广播电台打广告要多少钱?
- 花了20分钟,给女朋友们写了一个web版群聊程序
- 【AI视野·今日CV 计算机视觉论文速览 第197期】Thu, 13 May 2021
- mysql ip比较大小_MySQL优化/面试,看这一篇就够了
- ProGuard正确下载网址
- 【图像隐写】基于matlab GUI DCT数字水印嵌入与提取【含Matlab源码 1323期】
- TOGAF 知识点整理
- 程序员绩效考核工作汇报
- 高中教师计算机水平要求,高中信息技术教师考试大纲
- 纯前端集成视频会议和聊天室
- Openstack1 云计算与虚拟化概念
- 基于单片机门电路测试
- C18-PEG-ICG18碳烷基链-聚乙二醇-吲哚菁绿,Cholesterol-PEG-ICG胆固醇-聚乙二醇-吲哚菁绿
- Google Filament 源码学习(二):三方库分类总结
- JS设置select标签选中的值
- 【不就是java设计模式吗】设计模式七大原则,用代码对比方式,化抽象为具体,实打实的教会你
- 用C语言输出当前文件夹中所有的文件名opendir
- 丢人!35岁软件工程师:因涉嫌欺诈150万美元抗疫贷款被捕
- 第三方登录用户信息表设计