作者:Aningsk ,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
嗯嗯,昨天看完了第二章构造和运行模块,虽然主要是学了一个Hello world,但也记录一下吧。
只是个人记录哈~参考价值极为有限。。。
一开始不知道这个hello_mod.c要写在哪里呢~以为要下载一份Linux源代码,然后如书中所说的安装到自己的系统中去,可是没有说明怎么安装Linux源码啊。。。后来发现这其实没有我想象的那么麻烦。在自己的系统中可以不用另外安装一个内核源码的,发行版自己带有“内核构造系统”,书中所说的安装一套源码是因为发行版可能改过东西,原版的内核并不是必须的;即使安装了一套内核,用到的也只是它的“内核构造系统”。
那什么是“内核构造系统”?我个人的理解就是编译内核及其相关的模块时,用到的那一层层的Makefile、Kconfig和茫茫多的内核头文件。前面提到我们自己在用的发行版已经有了这个东西,它所在的路径是/lib/modules/3.13.0-32-generic/build/。里面的样子就是内核源码的样子,但没有C的源码只有一层层的Makefile、Kconfig和茫茫多的内核头文件。(当然“3.13.0-32-generic”不同版本是不同的)
写helloworld模块也不用在特定的目录里写,找个自己喜欢的合适的地方就可以。如~/LDD3study/hello/
上面这幅图是我写的(或者说是抄下来的,嘿嘿)。首先是两行头文件,是每个模块基本都要有的。呃……这就不用多说了吧,LDD3上都有说明。
还有Makefile,LDD3刚刚给出hellowo