在做驱动时,往往想编译成模块,让后加载来使用,这样灵活性较高,无需重新编译内核。
然后在使用供应商提供的内核时,往往无法编译成内核。也就是说把宏设置为y,编译进内核没有问题,但是设置成m编译成模块却不行。检查很多地方都不行,实际上这个问题很简单,可就这个简单的问题,搞了我一天,真心伤啊,这里做个记录做谨记。
解决的办法很简单,看看在执行内核make的时候是否添加了modules参数,如下面的形式:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-cortex_a9-linux-gnueabi-
如果不能编译,是不是发现没有modules这个参数呢。添加上问题解决。