首先在终端输入:sudo insmod modules.ko
现在我们来看看我们的模块加载成功没有呢?
在终端输入:dmesg | tail -12这是查看内核输出信息的意思 。tail -12 显示最后12条;
显示结果如下:
[17945.024417] sd 9:0:0:0: Attached scsi generic sg2 type 0
[18046.790019] usb 5-8: USB disconnect, address 9
[19934.224812] Hello, How are you. 0
[19934.224817] Hello, How are you. 1
[19934.224818] Hello, How are you. 2
[19934.224820] Hello, How are you. 3
[19934.224821] Hello, How are you. 4
[19934.224822] Hello, How are you. 5
[19934.224824] Hello, How are you. 6
[19934.224825] Hello, How are you. 7
[19934.224826] Hello, How are you. 8
[19934.224828] Hello, How are you. 9
看到了吧 。我们的模块的初始化函数yuer_init();已经成功运行了 。说明我们的模块已经加载成功;
现在我们再来卸载模块试试看 。
在终端输入:sudo rmmod modules
在终端输入:dmesg | tail -3
[19934.224826] Hello, How are you. 8
[19934.224828] Hello, How are you. 9
[20412.046932] I come from yuer's module, I have been unlad.
可以从打印的信息中看到,我们的模块的退出函数已经被执行了 。说明我们的模块已经被成功的卸载了 。到目前位置我们就已经算是对模块的编译到编译运行算是有了一个整体上的认识了 。对于以后深入的学习还是应该有点帮助的 。下面我们将在看看于模块相关的一些简单的操作 。
第五步:加载模块时传递参数
在终端输入:sudo insmod module_name.ko nbr=4
在终端输入:dmesg | tail -6
显示结果如下:
[20800.655694] Hello, How are you. 9
[21318.675593] I come from onefile module, I have been unlad.
[21334.425373] Hello, How are you. 0
[21334.425378] Hello, How are you. 1
[21334.425380] Hello, How are you. 2
[21334.425381] Hello, How are you. 3
这样我们就可以看到在模块加载的时候动态设置了我们的一个变量 。初始化函数中的循环只执行了4次 。
可能你会问我怎么知道一个模块可以设置那些变量呢 。当然,你可以先不设变量加载一次 。然后可以在终端输入ls /sys/module/modules_name/parameters/来查看 。在这里我们是这样输入的
在终端输入:ls /sys/moedle/modules/parameters/
显示结果:
nbr
如果我们的模块加载成功了 。最后我们还可以通过modinfo来查看我们的模块信息 。如下
在终端输入:sudo modinfo modules.ko
显示结果:
filename:modules.ko
license:GPL
author:Yu Qiang
srcversion:20E9C3C4E02D130E6E92533
depends:
vermagic:2.6.24-24-generic SMP mod_unload 586
parm:nbr:int
linux 怎么编译c的源程序的?gcc,编译命令是什么?编译方法:格式 gcc [option] [sourcefilename]常用的选项最简单的是:gcc hello.c默认的情况下将生成a.out的可执行性文件,
只需要在终端上输入./a.out就可以看到执行的结果,如果你想指定生成目标文件的名字那么你可以加上 -o选项,命令如下:gcc -o hello hello.c
命令:gcc -c hello hello.c
扩展资料:
gcc命令的基本用法
gcc[options] [filenames]
其中,filenames为文件名;options为编译选项 。
当不使用任何编译选项编译hello.c时,gcc将会自动编译产生一个a.out的可执行文件:
[root@localhost c]# ls
hello.c
[root@localhost c]# gcc hello.c
[root@localhost c]# ls
a.outhello.c
执行:
[root@localhost c]# ./a.out
Hello, World!
使用-o编译选择,可以为编译后的文件指定一个名字:
[root@localhost c]# ls
a.outhello.c
[root@localhost c]# gcc hello.c -o hello
[root@localhost c]# ls
推荐阅读
- 包含postgresqlextension的词条
- wordpress页面属性模板,wordpress默认模板
- 区块链趣链科技如何呢,区块链产品就找趣链科技技术
- 投屏Java代码,java实现投屏代码
- vs和vb.net区别 vb和net的关系
- html5构建file,html搭建
- gis中导出cad,gis中导出数据出现错误是什么原因
- 包含postgresql物化视图更新的词条
- vbnet安全性 vbnet教程2018版