Я пытаюсь перекрестно скомпилировать модуль для ARM. Я использую Sabrelite как плату с версией ядра 3.0.35. Я использую open-embedded для создания образа ядра.Перекрестная компиляция модуля ядра ARM
У меня есть весь инструментарий, необходимый для кросса-компиляции, как приведено ниже:
echo $CC :
arm-oe-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/usr/local/oecore-x86_64/sysroots/cortexa9hf-vfp-neon-oe-linux-gnueabi
echo $CROSS_COMPILE: arm-oe-linux-gnueabi-
echo ARCH: arm
(Это просто какая-то часть моего набора инструментов.)
Это часть моего Makefile:
Когда я запускаю его с помощью команды make, я получаю модуль (.ko), но странно, что сгенерированный модуль скомпилирован с помощью моей основной машины, что означает, что makef ile вызывает собственный компилятор вместо кросс-компилятора. Что я делаю не так? Бинарные файлы кросс-компилятора находятся на моем пути.
Это часть продукции я получаю на терминале:
CC /home/user/script_emulation/AODV/aodv-uu/lnx/kaodv.mod.o
LD [M] /home/user/script_emulation/AODV/aodv-uu/lnx/kaodv.ko
Мы можем видеть, что там родной CC и LD используется вместо перекрестных инструментов компилятора
Может кто-нибудь предложить решение?
благодаря
Update:
$ readelf -h kaodv.ko
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: REL (Relocatable file)
Machine: ARM
Version: 0x1
Entry point address: 0x0
Start of program headers: 0 (bytes into file)
Start of section headers: 13480 (bytes into file)
Flags: 0x5000000, Version5 EABI
Size of this header: 52 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 40 (bytes)
Number of section headers: 33
Section header string table index: 30
«CC», «LD» и т. Д. На выходе KBuild являются довольно печатными, они не обязательно являются фактическими командами. Используйте 'make V = 1 ...', чтобы узнать, что он на самом деле делает. Можете ли вы подтвердить, что файл .ko действительно неправильный формат, например. readelf? – Notlikethat
Спасибо, это результат, который я получаю: echo "ERROR: Конфигурация ядра недействительна."; \t \t \ \t эхо "включают/сгенерированного/autoconf.h или включить/Config/auto.conf отсутствуют."; \ \t эхо "Run 'сделать oldconfig && сделать подготовить' на ядре ЦСИ, чтобы исправить это."; \t \ Это означает, что я должен перенастроить свое ядро (что я уже сделал !!!) – scof007
@Notlikethat да, файл .ko неправильный формат, потому что я тестировал его на цель, и он просто не работать как должно быть – scof007