多目录多源文件的驱动Makefile模板(2)

这个Makefile也可以应用于交叉编译情况,由KERNELDIR指定内核目录即可,不过,这个内核必须是适合某个平台的,即交叉编译器必须在内核顶层的Makefile中指定(内核移植时,这一步骤似乎是最先进行的)。如这里指定ARM平台的内核,路径为/home/latelee/my2440/linux-2.6.37.3。

下面看看make的过程并查看生成的模块文件属性:

[root@latelee hello-multi]# make
                        Compiling ...
make[1]: Entering directory `/home/latelee/my2440/linux-2.6.37.3'
  CC [M]  /home/latelee/driver-test/hello-multi/come.o
  CC [M]  /home/latelee/driver-test/hello-multi/on.o
  LD [M]  /home/latelee/driver-test/hello-multi/GotoHell.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/latelee/driver-test/hello-multi/GotoHell.mod.o
  LD [M]  /home/latelee/driver-test/hello-multi/GotoHell.ko
make[1]: Leaving directory `/home/latelee/my2440/linux-2.6.37.3'
                        [Job done!]
[root@latelee hello-multi]# file GotoHell.ko
GotoHell.ko: ELF 32-bit LSB relocatable, ARM, version 1 (SYSV), not stripped
[root@latelee hello-multi]# insmod GotoHell.ko
insmod: error inserting 'GotoHell.ko': -1 Invalid module format


提示信息中红色部分表明这个模块已经是ARM平台的模块了。在x86上是不能加载的。

下面附上完整的Makefile:

注:文中显示的黑框及各种颜色,仅仅是想重现一下在shell下面的显示情况。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxwss.html