我想试一下使用往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里模块编译的问题相关推荐

  1. android camera2 qcom,lineage编译环境里,编译QCamera2的技术总结

    在lineage编译环境里,编译QCamera2 源码路径 hardware/qcom/camera/QCamera2 编译命令 mmm hardware/qcom/camera/QCamera2 编 ...

  2. Linux学习-额外(单一)核心模块编译

    编译前注意事项 由于我们的核心原本就有提供很多的核心工具给硬件开发商来使用, 而硬件开发商也需要针对核心 所提供的功能来设计他们的驱动程序模块,因此, 我们如果想要自行使用硬件开发商所提供的模块 来进 ...

  3. linux模块化机制,Linux模块化机制和module_init

    > 引子:模块化机制优点 模块化机制(module)是Linux系统的一大创新,是Linux驱动开发和运行的基础(当然,module并不仅仅是支撑驱动).其优点在于: 1.在系统运行动态加载模块 ...

  4. Android nfc编译,【Android编译】各个模块编译方法

    一.如何编译出vendor.img 1. 首先找到产品对应BoardConfig.mk 路径:LINUX/android/ device/项目/产品/BoardConfig.mk 2. 修改Board ...

  5. 编译kernel外部模块

    编译kernel外部模块 一.说明 二.编译外部模块 条件 语法 三.编译脚本 编写脚本 脚本的几种实现方式 四.编译包含头文件 kernel头文件放置规则 不同情况,头文件的使用 五.编译安装目录( ...

  6. linux 模块化编译,手把手教Linux驱动1-模块化编程 module

    大家好,从本篇起,一口君将手把手教大家如何来学习Linux驱动,预计会有20篇关于驱动初级部分知识点.本专题会一直更新,有任何疑问,可以留言或者加我微信. Linux的开发者,遍布世界各地,他们相互之 ...

  7. Linux 2.6内核的编译步骤及模块的动态加载

    本文是基于2.6的内核,也建议各位可以先看一下<Linux内核设计与实现(第二版)>作为一个基础知识的铺垫.当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块 ...

  8. 简单实例讲解linux的module模块编译步骤

    简单实例讲解linux的module模块编译步骤 (2014-10-24 10:19:17) 标签: module linux 分类:Linux/Unix 本文将直接了当的带你进入linux的模块编译 ...

  9. java 位运算取8位_Java 9 AOT 试用:仅支持 64 位 Linux和java.base 模块编译

    Java 9 引入了 aot 编译方式,能够将 class 文件直接编译成可执行二进制文件.目前 Java 9 的 early access 版本已经提供了编译工具,让我们来看看它的功能吧. 注意:按 ...

最新文章

  1. app调html页面,app界面管理(风格色调).html
  2. 广播延时大约多久_在长沙广播电台打广告要多少钱?
  3. 花了20分钟,给女朋友们写了一个web版群聊程序
  4. 【AI视野·今日CV 计算机视觉论文速览 第197期】Thu, 13 May 2021
  5. mysql ip比较大小_MySQL优化/面试,看这一篇就够了
  6. ProGuard正确下载网址
  7. 【图像隐写】基于matlab GUI DCT数字水印嵌入与提取【含Matlab源码 1323期】
  8. TOGAF 知识点整理
  9. 程序员绩效考核工作汇报
  10. 高中教师计算机水平要求,高中信息技术教师考试大纲
  11. 纯前端集成视频会议和聊天室
  12. Openstack1 云计算与虚拟化概念
  13. 基于单片机门电路测试
  14. C18-PEG-ICG18碳烷基链-聚乙二醇-吲哚菁绿,Cholesterol-PEG-ICG胆固醇-聚乙二醇-吲哚菁绿
  15. Google Filament 源码学习(二):三方库分类总结
  16. JS设置select标签选中的值
  17. 【不就是java设计模式吗】设计模式七大原则,用代码对比方式,化抽象为具体,实打实的教会你
  18. 用C语言输出当前文件夹中所有的文件名opendir
  19. 丢人!35岁软件工程师:因涉嫌欺诈150万美元抗疫贷款被捕
  20. 第三方登录用户信息表设计

热门文章

  1. WinCE 与通讯模块
  2. 【前端】搭建一个VUE框架
  3. Mysql8.0新特性之详细版本
  4. HTML5基础 | (2)HTML5文档结构与标签
  5. 保持好奇心,让程序员永远年轻
  6. 经营计划模拟沙盘实现预见未来
  7. 字节byte转换为B,KB,MB,GB,TB
  8. Linux常用命令(一) —— 开关机命令shutdown、远程登录命令ssh、远程拷贝文件命令scp
  9. 图的建立(邻接矩阵)与其深度优先和广度优先遍历
  10. GNSS第十一周作业