linux模块化编程

简介: linux模块化编程

前言

       最近挺忙的,疫情加课程,另外还在不断学习Linux,都要忘了和大家分享了。不过它还是来了,在第二章学习完之后,我对Linux的一些概念有了了解,至于能不能口述,还得背背,而对于makefile吗,知道怎么用,会移植就好了,它其实算个脚本吧。在这一章,将学习模块化编程的步骤和规范。let's go...


一、makefile脚本

       在这里,提供一个makefile,供大家使用(注意make和rm前面是tab键,不是空格):

1.     obj-m := hello.o # 改成自己的模块名字 hello.o 对应hello.c
2.     KERN_VER = $(shell uname -r)
3.     KDIR := /lib/modules/$(KERN_VER)/build
4.  all:
5.         make -C $(KDIR) M=$(PWD) modules
6.  clean:
7.         rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.bak *.order

二、模块化编程步骤

1.

     模块加载函数(必须):当通过insmod命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块相关初始化工作;

     模块卸载函数(必须):当通过rmmod命令卸载模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能;

2.

       块许可证声明(必须):模块许可证(LICENCE)声明描述内核模块的许可权限,如果不声明LICENCE,模块被加载时将收到内核被污染的警告。

       1和2是模块化编程必须的,另外还有一些可选的。

       模块参数(可选):模块参数是模块被加载的时候可以被传递给他的值,它本身对应模块内部的全局变量;

     模块导出符号(可选):内核模块可以导出符号(symbol,对应于函数或变量),这样其他模块可以使用本模块中的变量或函数;

     模块作者等信息声明(可选)。


总结

       以上就是模块化编程的步骤。

目录
相关文章
|
22天前
|
消息中间件 存储 缓存
【嵌入式软件工程师面经】Linux系统编程(线程进程)
【嵌入式软件工程师面经】Linux系统编程(线程进程)
35 1
|
1月前
|
Linux C语言
【Linux系统编程】基础指令(二)(上)
【Linux系统编程】基础指令(二)
|
1月前
|
Linux
【Linux系统编程】基础指令(二)(下)
【Linux系统编程】基础指令(二)
|
18天前
|
算法 Linux 测试技术
Linux编程:测试-高效内存复制与随机数生成的性能
该文探讨了软件工程中的性能优化,重点关注内存复制和随机数生成。文章通过测试指出,`g_memmove`在内存复制中表现出显著优势,比简单for循环快约32倍。在随机数生成方面,`GRand`库在1000万次循环中的效率超过传统`rand()`。文中提供了测试代码和Makefile,建议在性能关键场景中使用`memcpy`、`g_memmove`以及高效的随机数生成库。
|
1天前
|
机器学习/深度学习 Unix Java
技术笔记:Linux之Shell脚本编程(一)
技术笔记:Linux之Shell脚本编程(一)
|
25天前
|
存储 Unix Linux
Linux多进程编程详解
进程反应了进程执行的变化。 进程的状态分为三种 ,`运行态`,`阻塞态`,`就绪态` 在五态模型中分为以下几种,新建态,就绪态,运行态,阻塞态,终止态。 运行态:进程占用处理器正在运行。 就绪态:进程已具备运行的条件,等待系统分配处理器运行。 阻塞态 :又称为等待(`wait`)态,或睡眠(`sleep`)态,指进程不具备运行条件,正在等待事件的完成。 新建态:进程已被创建,还未加入就绪队列。
11 0
Linux多进程编程详解
|
25天前
|
Linux Perl
编程入门(七)之【Linux进阶操作AWK】
编程入门(七)之【Linux进阶操作AWK】
23 0
|
25天前
|
Linux Shell Perl
编程入门(六)【Linux系统基础操作四】
编程入门(六)【Linux系统基础操作四】
17 0
|
25天前
|
Linux Shell
编程入门(六)【Linux系统基础操作三】
编程入门(六)【Linux系统基础操作三】
14 0
|
25天前
|
Linux Shell 数据库
编程入门(六)【Linux系统基础操作二】
编程入门(六)【Linux系统基础操作二】
20 0