linux内核模块编译的一个问题!!!!

下面是一个Makefile文件的内容,用来编译内核模块的。



obj-m := mkdir_hook.o
PWD := $(shell pwd)

all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
rm -rf *.o *~ core .*.cmd *.mod.c ./tmp_version


执行make的时候,过程如下:

salmon@salmon-desktop:~/hook/mkdir_hook$ make

make -C /lib/modules/2.6.32-21-generic/build M=/home/salmon/hook/mkdir_hook modules
make[1]: 正在进入目录 `/usr/src/linux-headers-2.6.32-21-generic'
CC [M] /home/salmon/hook/mkdir_hook/mkdir_hook.o
/home/salmon/hook/mkdir_hook/mkdir_hook.c: In function ‘start_hook’:
/home/salmon/hook/mkdir_hook/mkdir_hook.c:124: warning: assignment makes integer from pointer without a cast
Building modules, stage 2.
MODPOST 1 modules
CC /home/salmon/hook/mkdir_hook/mkdir_hook.mod.o
LD [M] /home/salmon/hook/mkdir_hook/mkdir_hook.ko
make[1]:正在离开目录 `/usr/src/linux-headers-2.6.32-21-generic'




我的问题:
1.这个Makefile文件没指定编译器吗?那编译的时候用什么编译器编译呢??
(我机器上有gcc编译器,也有arm-linux-gcc交叉编译器)
2.编译过程中的CC和LD是什么意思??



作者: fxmmc   发布时间: 2011-05-03

楼主去学学Makefile和内核源代码中的Makefile语法.

作者: wenxy1   发布时间: 2011-05-03

尝试增加一下行到Makefile中,这样可以定义编译器为arm,否则默认为gcc
CROSS_COMPILE = arm-linux-
CC =$(CROSS_COMPLE)gcc

CC是编译,LD是链接。

作者: YTerrenceLau   发布时间: 2011-05-03

引用 2 楼 yterrencelau 的回复:
尝试增加一下行到Makefile中,这样可以定义编译器为arm,否则默认为gcc
CROSS_COMPILE = arm-linux-
CC =$(CROSS_COMPLE)gcc

CC是编译,LD是链接。

谢谢
请问为什么在make过程中要进入 `/usr/src/linux-headers-2.6.32-21-generic'这个目录??

作者: fxmmc   发布时间: 2011-05-03