Cross compiling a kernel module

Próbuję skompilować jądro helloworld (2.6.x) moduł dla architektury ARM na moim Intel x86 host.

Łańcuch narzędzi codesourcery do ramienia znajduje się pod adresem: /home/ravi/workspace/hawk/arm-2009q3

Źródło jądra znajduje się pod adresem: /home / ravi/workspace/hawk / linux-omapl1

Mój 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

When I run make , the .Ko produkowane jest z mojego komputera hosta, co oznacza, że makefile wywołuje natywny kompilator zamiast kompilator krzyżowy.Co robię źle? Binaria kompilatora krzyżowego są na mojej drodze.

Author: ysth, 2010-08-12

6 answers

Umieszczanie ARCH i CROSS_COMPILE w pliku Makefile nie działa. Musisz umieścić je w wierszu poleceń:

make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi-
 30
Author: JayM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-12 20:16:58

Zastąp

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

By

Export ARCH: = arm
export CROSS_COMPILE:=arm-none-linux-gnueabi -

Będzie to również działać, jeśli nie chcesz za każdym razem podawać tych parametrów wiersza poleceń.

 17
Author: raj_gt1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-22 11:21:08

Uwaga boczna: SUBDIRS= jest przestarzała na rzecz M=.

 6
Author: user502515,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-21 13:49:17

Możesz spróbować, zapomniałeś dodać ARCH i CROSS_COMPILE do domyślnego i czystego

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
 5
Author: Albert Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-07 00:51:03

Dodanie export na końcu deklaracji zmiennej Makefile sprawi, że będą one dostępne dla podshellów. i dodaj myślnik do prefiksu CROSS_COMPILE jako jaym, A M zamiast SUBDIRS jako user502515 odpowiedział.

I ogólnie dobrym pomysłem jest użycie := zamiast = w pliku Makefile, więc zmienna jest interpolowana tylko raz. naprawdę nie ma to jednak znaczenia w tym konkretnym przypadku.

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
 0
Author: jcomeau_ictx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-15 18:04:26
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
 -2
Author: aldo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-06 19:37:48