Linux Module 的HelloWorld程序(For Kernel-2.6)

66 篇文章 0 订阅

hello.c文件

 

Makefile文件(注意,只能是Makefile,而不是makefile。这是2.4和2.6又一个不同)

obj-m := hello.o

KDIR := /usr/src/linux
PWD  :=$(shell pwd)

default:
    $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
    rm -rf *.ko
    rm -rf *.mod.*
    rm -rf .*.cmd
    rm -rf *.o
install:
    insmod hello.ko
remove:
    rmmod hello

 

[root@localhost hello]# make

[root@localhost hello]# make install

 

如果出现:“Invalid module format”请参考:Linux 2.6.x 内核模块加载错误 “Invalid module format” 解决办法


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Buildroot 中,`eval` 命令的作用是在构建过程中动态执行一个字符串作为 Shell 命令。`kernel-module` 是 Buildroot 中用于构建 Linux 内核模块的选项之一。因此,`eval kernel-module` 的作用是动态执行一个字符串以构建 Linux 内核模块。 具体用法如下: 1. 在 Buildroot 的 `make` 命令中添加 `BR2_PACKAGE_CUSTOM_KERNEL_MODULES=y`,启用自定义内核模块选项。 2. 在 `package/Config.in` 文件中添加以下代码,定义内核模块选项: ``` config BR2_PACKAGE_MY_KERNEL_MODULE bool "My Kernel Module" help Build and install my custom kernel module ``` 3. 在 `package/my_kernel_module/` 目录下创建以下文件: - `my_kernel_module.mk`:定义内核模块的构建规则。 - `my_kernel_module.modprobe`: 定义内核模块的 modprobe 配置文件。 4. 在 `my_kernel_module.mk` 中,使用以下代码定义内核模块的构建规则: ``` MY_KERNEL_MODULE_VERSION = 1.0 MY_KERNEL_MODULE_SITE = $(TOPDIR)/../my_kernel_module MY_KERNEL_MODULE_SITE_METHOD = local define MY_KERNEL_MODULE_BUILD_CMDS $(MAKE) -C $(@D) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(TARGET_CROSS) \ KERNELDIR=$(LINUX_DIR) M=$(PWD) modules endef define MY_KERNEL_MODULE_INSTALL_TARGET_CMDS $(INSTALL) -D -m 644 $(@D)/my_kernel_module.ko \ $(TARGET_DIR)/lib/modules/$(KERNEL_VERSION)/extra/my_kernel_module.ko endef $(eval $(kernel-module)) ``` 这里,`MY_KERNEL_MODULE_VERSION` 指定内核模块的版本号,`MY_KERNEL_MODULE_SITE` 指定内核模块的源代码目录,`MY_KERNEL_MODULE_SITE_METHOD` 指定内核模块的源代码获取方式(这里是本地目录),`MY_KERNEL_MODULE_BUILD_CMDS` 定义内核模块的构建命令,`MY_KERNEL_MODULE_INSTALL_TARGET_CMDS` 定义将内核模块安装到目标系统的命令。 5. 在 `my_kernel_module.modprobe` 文件中定义内核模块的 modprobe 配置信息: ``` alias my_kernel_module my_kernel_module.ko ``` 6. 最后,在 Buildroot 的菜单配置界面中,选择 `Target packages -> Hardware handling -> Kernel modules -> My Kernel Module`,使 Buildroot 构建系统包含您的自定义内核模块。 在 Buildroot 构建系统构建完成后,您的自定义内核模块将被编译并安装到目标系统中,可以使用 modprobe 命令加载和卸载该模块。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值