文件指示:其包括三个部分,一个是在一个makefile中引用另一个makefile,就像C语言中的include一样。另一个是指根据某些情况指定makefile中的有效部分,就像C语言中的预编译tlif一样。还有就是定义一个多行的命令。
注释: makefile 中支持行注释,这一点需要特别注意。makefile 中的注释和 shell脚本一样,其注释是用“#”字符。如果需要在 makefile中使用“#”字符,可以用‘\’对其进行转义。例如,“\#”表示一个‘#’字符。makefile文件的文件名最好命名为makefile或者Makefile。因为在默认的情况下,make命令会在当前目录下按顺序找寻这两个文件进行解释。用户也可以为makefile文件自定义一个文件名,例如,Make.makefile,Make.admin等。
linux下没有后缀名这么一说,makefile.linux就是一个文件名,之所以加。linux只是为了让用户能更好的区分而已,系统处理的时候是把makefile.linux整个给提取了的,这不像在windows下,一个执行文件的话必须是exe格式的,要执行的话只需要知道.exe之前是什么就可以了,linux下要执行的话必须输入整个文件名。假设模块的源文件为hello.c,源码如下:
使用该文件编译内核模块。
正常情况下,Makefile文件内容如下:
执行 make 命令,生成hello.ko文件。
执行 sudo insmod hello.ko 命令,安装该模块。
执行 lsmod 命令,查看安装的模块。就会看到第一行的就是hello模块。
但是,如果想自定义模块名称为 xmodule ,而不是默认的 hello ,如何实现呢?方法如下:
在Makefile中重命名obj-m并将obj-m的依赖关系设置为原始模块(hello)
修改后的Makefile文件内容如下:
将obj-m设置为 xmodule .o,并使 xmodule .o依赖于 hello .o.
执行 make 命令后,生成 xmodule .ko, 而不是 hello .ko,
安装命令: sudo insmod xmodule.ko
查看命令: lsmod ,就会看到被安装名为 xmodule 的模块。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)