当前位置: 技术问答>linux和unix
关于一个简单内核模块的编译,新手请教
来源: 互联网 发布时间:2017-01-31
本文导语: 我又编译了一下可以编译了 但是不知道这个Makefile中一些地方的意思 test = hello_world obj-m := $(test).o KERNELDIR = /lib/modules/`uname -r`/build PWD = `pwd` default: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules install: insmod $(te...
我又编译了一下可以编译了 但是不知道这个Makefile中一些地方的意思
test = hello_world
obj-m := $(test).o
KERNELDIR = /lib/modules/`uname -r`/build
PWD = `pwd`
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
install:
insmod $(test).ko
uninstall:
rmmod $(test).ko
clean:
rm -rf *.o *.mod.c *.ko
rm -rf Module.symvers .*cmd .tmp_versions
对于一个.c文件不是应该要先把hello_world.c编译成hello_world.o,然后再把hello_world.o编成hello_world.ko的吗 ,怎么这个Makefile跳过了一个步骤呢
高手帮我注释一下这个Makefile吧
test = hello_world
obj-m := $(test).o
KERNELDIR = /lib/modules/`uname -r`/build
PWD = `pwd`
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
install:
insmod $(test).ko
uninstall:
rmmod $(test).ko
clean:
rm -rf *.o *.mod.c *.ko
rm -rf Module.symvers .*cmd .tmp_versions
对于一个.c文件不是应该要先把hello_world.c编译成hello_world.o,然后再把hello_world.o编成hello_world.ko的吗 ,怎么这个Makefile跳过了一个步骤呢
高手帮我注释一下这个Makefile吧
|
建议楼主 有时间看看 gnu make的文档,很好找的
现在的 linux 编译 是使用 kbuild完成的,它的编译机制是有很大的变化的,具体些的我也不就不知道了,
或者看看 linux module programming,里边有对这个的解释的
现在的 linux 编译 是使用 kbuild完成的,它的编译机制是有很大的变化的,具体些的我也不就不知道了,
或者看看 linux module programming,里边有对这个的解释的
|
把hello_world.c编译成hello_world.o这步是通过隐含规则完成的,就是说make自动帮你完成了.
|
建议你去查看一下kernel目录下的Makefile,利用了那里的一些规则。