Вопрос

Я пытаюсь пересечь модуль Compiele Kernel (2.6.x) HellowOrld (2.6.x) для архитектуры ARM на моем хосте Intel X86.

Цепь инструментов CodeSourcery для 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

Когда я бегу сделать, Производимый .КО состоит в том, что мой хост-машина, что означает, что Makefile вызывает собственный компилятор вместо перекрестного компилятора. Что я делаю не так? Двоины перекрестного компилятора находятся на моем пути.

Это было полезно?

Решение

Посадка ARCH а также CROSS_COMPILE В Makefile не работает. Вам нужно поставить их в командную строку:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-

Другие советы

Заменять

Арка = рука
Cross_compile = ARM-NONE-LINUX-GNUABI

к

Экспорт арки: = рука
Экспорт Cross_Compile: = ARM-NONE-LINUX-GNUABI-

Это также будет работать, если вы не хотите давать эти параметры командную строку каждый раз.

Примечание: SUBDIRS= устаревают в пользу M=.

Не могли бы вы попробовать, вы забыли добавить арку и 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

добавление export В конце ваших однонаправленных деклараций сделайте их доступными для подмолков. и добавьте тире на CROSS_COMPILE префикс как Ухаживание указал, а M вместо SUBDIRS так как user502515. ответил.

И вообще хорошая идея использовать := скорее, чем = В Makefile, поэтому переменная только один раз проводится. На самом деле не имеет значения в этом конкретном случае, хотя.

ARCH := arm
CROSS_COMPILE := arm-none-linux-gnueabi-
obj-m := Hello.o
KDIR := /home/ravi/workspace/hawk/linux-omapl1
PWD := $(shell pwd)
export
default:
          $(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
          $(MAKE) -C $(KDIR) M=$(PWD) clean
MODULES := hola_kern.o

#guest architecture
ARCH := arm

CROSS_COMPILE := arm-linux-gnueabi-
obj-m := $(MODULES)

#path of the arm compiled kernel
ROOTDIR := /home/aldo/c/proyectos/prefixa/work/kernels/linux-omap-5f0a6e2

MAKEARCH := $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)

all: modules
modules:
    $(MAKEARCH) -C $(ROOTDIR) M=${shell pwd} modules

clean:
    $(MAKEARCH) -C $(ROOTDIR) M=${shell pwd} clean
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top