返回信息流以下是一个模块的makefile:
EXTRA_CFLAGS += -Wall -Werror -I$(KERNELDIR)/include
TARGET = hello_world
ifneq ($(KERNELRELEASE),)
# call from kernel build system
$(TARGET)-objs += hello_world.o
obj-m := $(TARGET).o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all: modules
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
#$(STRIP) -S $(TARGET).ko
endif
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions *.symvers *.order
depend .depend dep:
$(CROSS_COMPILE)$(CC) $(CFLAGS) -M *.c > .depend
ifeq (.depend,$(wildcard .depend))
include .depend
endif
问题是:
1. 现在根据这个makefile编译出来的.ko文件,是x86平台的,不是mips的;所以insmod失 败啦!
2. 怎么弄交叉编译呢?怎么把交叉编译整到这个makefile里面?
3.KERNELDIR变量怎么设置?
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #12565同步于 2012/8/25
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
请问如何在x86平台上编译mips的内核模块???????多谢!
bewithyou
2012/8/25镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules ARCH=mips CC=mips-linux-gcc
编译module之前先把内核编一遍,如果有符号依赖的话.
$(MAKE) -C $(KERNELDIR) ARCH=mips CC=mips-linux-gcc
【 在 bewithyou (唉。。。。。。。) 的大作中提到: 】
: 以下是一个模块的makefile:
: EXTRA_CFLAGS += -Wall -Werror -I$(KERNELDIR)/include
: TARGET = hello_world
: ...................
可是你这样,没有指定mips-linux-gcc编译器的路径啊???
【 在 ArmStrong 的大作中提到: 】
: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules ARCH=mips CC=mips-linux-gcc
: 编译module之前先把内核编一遍,如果有符号依赖的话.
: $(MAKE) -C $(KERNELDIR) ARCH=mips CC=mips-linux-gcc
你自己加到PATH里啊,这种事情不必让makefile来干
【 在 bewithyou 的大作中提到: 】
: 可是你这样,没有指定mips-linux-gcc编译器的路径啊???
对头,写在makefile里也行的,不过一般在一个平台下开发,可能会编译各种软件,你每种都在makefile中添加,会比较麻烦,不如直接加到PATH里面。
【 在 bewithyou (唉。。。。。。。) 的大作中提到: 】
: 你是说,加到环境变量的path ?
多谢大牛啊!
【 在 ArmStrong 的大作中提到: 】
: 对头,写在makefile里也行的,不过一般在一个平台下开发,可能会编译各种软件,你每种都在makefile中添加,会比较麻烦,不如直接加到PATH里面。