سؤال

أحاول عبور وحدة Helloworld kernel (2.6.x) للهندسة المعمارية للذراع على مضيف Intel X86 الخاص بي.

توجد سلسلة أدوات CodeSourcery لـ ARM على: /Home/Ravi/Workspace/Hawk/ARM-2009Q3

يقع مصدر kernel في:/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

عندما أركض صنع, ،. Ko المنتج هو جهاز المضيف الخاص بي مما يعني أن Makefile يستدعي المترجم الأصلي بدلاً من المترجم المتقاطع. ما الذي أفعله خطأ؟ ثنائيات المترجم المتقاطع في طريقي.

هل كانت مفيدة؟

المحلول

وضع ARCH و CROSS_COMPILE في Makefile لا يعمل. تحتاج إلى وضعها على سطر الأوامر:

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

نصائح أخرى

يحل محل

القوس = الذراع
cross_compile = ذراع-none-linux-gnueabi

بواسطة

قوس التصدير: = الذراع
تصدير cross_compile: = ذراع-لا linux-gnueab--

سيعمل هذا أيضًا إذا كنت لا ترغب في إعطاء سطر الأوامر المعلمة هذا في كل مرة.

ملاحظة جانبية: 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 بادئة جايم أشارت ، و 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