iti*_*avi 31 makefile cross-compiling kernel-module embedded-linux linux-toolchain
我正在尝试在我的intel x86主机上为ARM体系结构交叉编译helloworld内核(2.6.x)模块.
ARM的代码源工具链位于:/ home/ravi/workspace/hawk/arm-2009q3
内核源代码位于:/ home/ravi/workspace/hawk/linux-omapl1
我的Makefile:
ARCH=arm
CROSS_COMPILE=arm-none-linux-gnueabi
obj-m := Hello.o
KDIR := /home/ravi/workspace/hawk/linux-omapl1
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
Run Code Online (Sandbox Code Playgroud)
当我运行make时,.ko生成的是我的主机,这意味着makefile正在调用本机编译器而不是交叉编译器.我做错了什么?交叉编译器的二进制文件在我的路径中.
Jay*_*ayM 34
把ARCH和CROSS_COMPILEMakefile文件不起作用.您需要将它们放在命令行上:
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
Run Code Online (Sandbox Code Playgroud)
raj*_*gt1 18
更换
ARCH = arm
CROSS_COMPILE = arm-none-linux-gnueabi
通过
export ARCH:= arm
export CROSS_COMPILE:= arm-none-linux-gnueabi-
如果您不想每次都提供这些参数命令行,这也可以工作.
你可以尝试,你忘了将ARCH和CROSS_COMPILE添加到默认值并清理
ARCH=arm
COMPILER=arm-none-linux-gnueabi
obj-m := Hello.o
KERNELDIR := /home/ravi/workspace/hawk/linux-omapl1
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD) ARCH=$(ARCH) CROSS_COMPILE=$(COMPILER) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(PWD) ARCH=$(ARCH) clean
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71289 次 |
| 最近记录: |