質問

Intel X86ホストのアームアーキテクチャ用のHelloworldカーネル(2.6.x)モジュールを渡そうとしています。

ARM用のCodeSourceryツールチェーンは、次のようにあります。 /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

走るとき 作る, 。クロスコンパイラのバイナリは私の道にあります。

役に立ちましたか?

解決

パッティング ARCHCROSS_COMPILE MakeFileでは機能しません。あなたはそれらをコマンドラインに置く必要があります:

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

他のヒント

交換

Arch = ARM
cross_compile = arm-none-linux-gnueabi

エクスポートアーチ:=アーム
Export cross_compile:= arm-none-linux-gnueabi-

これは、毎回これらのパラメーターコマンドラインを提供したくない場合にも機能します。

サイドノート: 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 MakeFileの変数宣言の最後に、それらをサブシェルで利用できるようにします。ダッシュをに追加します CROSS_COMPILE 接頭辞AS ジェイム 指摘された、そして 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