曲径通幽论坛
标题:
建立自己的内核模块及内核模块 Makefile
[打印本页]
作者:
beyes
时间:
2015-4-10 21:48
标题:
建立自己的内核模块及内核模块 Makefile
也鼓捣了个内核模块,虽然参考了网上一些例子,但放在自己身上用时,总会遇到这样那样的问题,下面这个是经过实践可以跑的,使用环境是 bb 14.07 。
建立内核模块:
1. 在 package 下建立一个工程目录,该目录下存放 Openwrt 编译时需要的 Makefile 。
2. 在该目录下创建一个 src 目录,该目录下存放内核模块的源码,以及一个简单的 Makefile,其内容如:
obj-m:=hello.o
复制代码
其实最关键的是工程目录下的 Makefile,如果这个没写对,即使生成内核模块,但也可能没法生成固件。我的 Makefile 如下:
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=hello
PKG_RELEASE:=1
include $(INCLUDE_DIR)/package.mk
define KernelPackage/hello
SUBMENU:=Other modules
TITLE:=Kmod for hello
DEPENDS:=@!LINUX_3_X
AUTOLOAD:=$(call AutoLoad,81,hello)
FILES:=$(PKG_BUILD_DIR)/hello.ko
KCONFIG:=
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
MAKE_OPTS:= \
ARCH="$(LINUX_KARCH)" \
CROSS_COMPILE="$(TARGET_CROSS)" \
SUBDIRS="$(PKG_BUILD_DIR)"
define Build/Compile
$(MAKE) -C "$(LINUX_DIR)" \
$(MAKE_OPTS) \
modules
endef
$(eval $(call KernelPackage,hello))
复制代码
这里,比较重要的是,最好将 DEPENDS:=@!LINUX_3_X 这个依赖写上,否则又可能提示 ERROR: .....modules is missing 的错误。
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/)
Powered by Discuz! X3.2