linux内核编程(一)
- 1 #include <linux/module.h>
- 2 #include <linux/kernel.h>
- 3 #include <linux/init.h>
- 4 static int __init lkp_init(void);
- 5 static int __exit lkp_exit(void);
- 6
- 7
- 8 static int __init lkp_init(void)
- 9 {
- 10 printk("<1>Hello ,Word!\n");
- 11 return 0;
- 12 }
- 13
- 14 static int __exit lkp_exit(void)
- 15 {
- 16 printk("<2>Hello,Word exit\n");
- 17 }
- 18 module_init(lkp_init);
- 19 module_exit(lkp_exit);
- 1 ifneq ($(KERNELRELEASE),)
- 2 mymodule-objs:= hello.c
- 3 obj-m += hello.o
- 4
- 5 else
- 6 PWD :=$(shell pwd)
- 7 KVER := $(shell uname -r)
- 8 KDIR :=/lib/modules/$(KVER)/build
- 9
- 10 all:
- 11 $(MAKE) -C $(KDIR) M=$(PWD)
- 12 clean:
- 13 rm -rf *.o *.mod.c *.ko *.symvers *order *.markers *-
- 14 endif
- 379 # Read KERNELRELEASE from include/config/kernel.release (if it exists)
- 380 KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
- 381 KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL) ,.$(SUBLEVEL)))$(EXTRAVERSION)
- [#35#caopeng@laptop:~]$cd kernel/
- [#36#caopeng@laptop:~/kernel]$ls
- hello.c Makefile
- [#37#caopeng@laptop:~/kernel]$make
- make -C /lib/modules/2.6.32-33-generic/build M=/home/caopeng/kernel
- make[1]: 正在进入目录 `/usr/src/linux-headers-2.6.32-33-generic'
- LD /home/caopeng/kernel/built-in.o
- CC [M] /home/caopeng/kernel/hello.o
- /home/caopeng/kernel/hello.c: In function ‘lkp_exit’:
- /home/caopeng/kernel/hello.c:17: warning: no return statement in function returning non-void
- /home/caopeng/kernel/hello.c: In function ‘__exittest’:
- /home/caopeng/kernel/hello.c:19: warning: return from incompatible pointer type
- Building modules, stage 2.
- MODPOST 1 modules
- CC /home/caopeng/kernel/hello.mod.o
- LD [M] /home/caopeng/kernel/hello.ko
- make[1]:正在离开目录 `/usr/src/linux-headers-2.6.32-33-generic'
- [#38#caopeng@laptop:~/kernel]$
- [#38#caopeng@laptop:~/kernel]$ls
- built-in.o hello.ko hello.mod.o Makefile Module.symvers
- hello.c hello.mod.c hello.o modules.order
- [#39#caopeng@laptop:~/kernel]$
- [#47#caopeng@laptop:~/kernel]$sudo rmmod hello.ko
- [#48#caopeng@laptop:~/kernel]$sudo insmod hello.ko
- [#49#caopeng@laptop:~/kernel]$dmesg -c
- klogctl: 不允许的操作
- [#50#caopeng@laptop:~/kernel]$sudo dmesg -c
- [14651.331364] Hello,Word exit
- [14658.553284] Hello ,
- [#51#caopeng@laptop:~/kernel]$
阅读(2903) | 评论(0) | 转发(0) |
上一篇:list.h头文件分析
下一篇:linux内核编程(二)
- Linux内核同步原语之原子操作...
- 《编程的修炼》试读——揭秘编...
- 代码阅读 dlm
- 图解linux内核编译框架...
- Linux文件描述符选择策略的讨...
- linux 常见服务端口
- 什么是shell
- 【ROOTFS搭建】busybox的httpd...
- linux socket的bug??
- linux的线程是否受到了保护?...
- 求教Linux 终端自动执行脚本的...
- 以下描述的关于apache和PHP关...
- 求教学习有关于linux 驱动方面...
- 【趣味题】 发疯的机器人...
- 如何安装java环境和tomcat(ub...
linux内核编程(一)相关推荐
- 初探linux内核编程,参数传递以及模块间函数调用
一.前言 我们一起从3个小例子来体验一下linux内核编程.如下: 1. 内核编程之hello world 2. 模块参数传递 3. 模块间函数调用 二.准备工作 首先,在你的linux系统上面安装l ...
- linux内核_Linux驱动编程的本质就是Linux内核编程
由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linux内核的特点. 这篇文章将会帮助读者打下Linux驱动编程的基础知识. 本篇文章分为如下三个小节进行 ...
- 【华为云技术分享】Linux内核编程环境 (1)
在上一期中,我们介绍了Linux内核的源码结构,这一期我们介绍Linux内核编程环境,首先介绍的是Linux内核的编译方法. 一.Linux内核编译方法 本期中我们以Linux 4.19.94版内核来 ...
- Linux内核编程接口函数
Linux内核编程接口函数 转载请注明出处: http://blog.csdn.net/drivelinux/article/details/8656280 字符设备相关函数 1.alloc_chrd ...
- linux内核编程(hello world示例程序)
linux内核编程(hello world) Linux可加载内核模块是 Linux 内核的最重要创新之一.它们提供了可伸缩的.动态的内核.其它开发者可以不用重新编译整个内核便可以开发内核层的程序,极 ...
- Linux 内核编程指南
Linux 内核编程指南 PeterJay Salzman MichaelBurian OriPomerantz Copyright© 2001 Peter Jay Salzman 2007−05 ...
- Linux 内核编程风格
Linux 内核编程风格 (518 个字於此篇帖子) (已阅读: 1177 次) 这篇短小的文章是对Linux内核编程风格的建议.编程风格非常的个性化,而且,我并不想将我的观点强加给任何人,但是为了变 ...
- linux进程睡眠编程,linux内核编程-可睡眠锁之SRCU
linux内核编程-可睡眠锁之SRCU DEFINE_SRCU DEFINE_SRCU_STATIC static修饰的定义只能在该c文件中使用,用于保护命名空间. 如果一个函数里面使用了static ...
- linux内核编程_内核线程kthread_run
linux内核编程_内核线程kthread_run 1. 简述: 2. 使用示例: 3. 详述: 1. 简述: 头文件: include/linux/kthread.h 数据类型: struct ta ...
最新文章
- linux hrtimer 绑定cpu,Linux hrtimer分析--未配置高精度模式
- SAP 创业计划 ---之三
- 关于搭建php电商环境时缺少fileinfo、数据库安装出错问题解决办法
- java中怎么找类的路径_Java中获取类加载路径和项目根路径的5种方法
- SAP BRF+ Interpretation模式与Generation模式的区别
- Yet Another Walking Robot CodeForces - 1296C
- java并发编程面试
- 量子通信入门相关书籍
- ftp协议是一种用于_______的协议_网络安全常见协议解析:TCP、UDP、HTTP、FTP、SMTP等之间的区别...
- SAP License:SAP精细化的应收付及要素为根设计思想
- gitlab 本地 定时备份
- 程序包androidx.appcompat.app不存在
- Windows下创建TFTP服务器,uboot访问,下载镜像
- android u盘加密代码,怎么用安卓手机给u盘加密
- JavaEE高级框架学习笔记(八)Struts高级ActionForm
- maven No plugin found for prefix ‘G‘ in the current project and in the plugin groups
- 解决大多数pip install出现Could not install packages due to an EnvironmentError错误
- Android PPP协议
- android之WebView应用
- 鸿蒙应用分身,应用分身怎么设置?按照这个步骤操作,分分钟即可搞定它