Ошибка при компиляции ядра Linux для ARM

Я клонировал ядро ​​из

 https://github.com/torvalds/linux.git

Затем попытался скомпилировать его следующим образом

#make menuconfig 

Появятся экраны конфигурации меню. Не внося никаких изменений, я сохраняю конфиг, который сгенерировал файл .config.

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

Я получаю следующую ошибку. пожалуйста, порекомендуйте

In file included from arch/arm/kernel/asm-offsets.c:20:0:
/home/androiddev/linus/linux/arch/arm/include/asm/glue-df.h:107:2: error: #error Unknown data abort handler type
 #error Unknown data abort handler type
  ^
In file included from arch/arm/kernel/asm-offsets.c:21:0:
/home/androiddev/linus/linux/arch/arm/include/asm/glue-pf.h:54:2: error: #error Unknown prefetch abort handler type
 #error Unknown prefetch abort handler type
  ^
make[1]: *** [arch/arm/kernel/asm-offsets.s] Error 1
make: *** [prepare0] Error 2

person codey modey    schedule 09.03.2014    source источник
comment
вы делаете ошибку, посмотрите на это stackoverflow.com/questions/20763344/ .   -  person vinay hunachyal    schedule 09.03.2014


Ответы (2)


Если вы сделаете

make menuconfig

тогда конфигурация читается для x86, а не для ARM. Сначала вам нужно посмотреть конфигурацию по умолчанию @ this

Зависят ли заголовки ядра от типа процессора, поставщика и т. д. ?

также

hv look @ Просто черный экран после запуска Qemu

если вы не знаете конфигурацию, вы можете получить копию .config из целевой rootfs /proc/config.gz

Кросс-компиляция ядра Linux Arm с новым модулем драйвера< /а>

person vinay hunachyal    schedule 09.03.2014
comment
Я также использовал метод, указанный здесь, но он не сработал. ="nofollow noreferrer">linuxforu.com/2011/06/ - person codey modey; 09.03.2014
comment
это файл .dts для $make ARCH=arm universal_defconfig, расположенный в .../config/versatile_defconfig.dts. Мне нужно включить в него еще один файл .dtsi, как мне подтвердить, что он включен #include ‹blah.dtsi›? - person codey modey; 16.03.2014

По какой-то причине ARCH не является частью сохраненной конфигурации. Как только вы запускаете любую команду make без ARCH=arm, она по умолчанию возвращается к архитектуре ПК. Компиляция ядра, настроенного для Intel, с помощью компилятора arm приводит к проблемам.

Обычно я фиксирую свой собственный локальный ARCH=arm в make-файле верхнего уровня ядра, чтобы избежать именно этой проблемы, но я действительно не понимаю, почему он не является частью сохраненной конфигурации, это избавило бы от многих головных болей людей, работающих над не- архитектуры на базе Intel...

person slobobaby    schedule 09.03.2014
comment
Чтобы сохранить общий Makefile верхнего уровня - person vinay hunachyal; 09.03.2014
comment
Это не имеет смысла. ARCH может стать параметром конфигурации, как и любой другой, и сохраняться в .config вместе с любым другим параметром конфигурации. Единственным аргументом может быть то, что одна и та же конфигурация может использоваться без изменений на разных архитектурах, но, поскольку ARCH влияет на то, что можно настроить, я не думаю, что это когда-либо сработает. - person slobobaby; 09.03.2014
comment
взгляните на этот stackoverflow. ком/вопросы/20763344/ - person vinay hunachyal; 09.03.2014
comment
Некоторые люди создают несколько целей из одного исходного каталога. См. вариант O=xxx; где исходный код и сборка находятся в разных каталогах. Для людей, которые интегрируют подсистемы, это очень ценно, так как вам не нужно синхронизировать десятки деревьев. Скажем, кто-то, разрабатывающий подсистему 'mm', должен проверить, компилируется ли она на всех архитектурах. Тем не менее, это неплохое предложение для некоторых людей; никакое решение не подойдет всем. Другое решение — обернуть команду в сценарий. - person artless noise; 10.03.2014