Настройка buildroot для старых ядер

Я пытаюсь настроить buildroot для кросс-компиляции пользовательского приложения.

/ # uname -a
Linux Venus 2.6.12.6-VENUS #323634 Wed May 25 13:40:36 CST 2011 mips unknown

Пока я выбрал версию ядра 2.6.12.6 в buildroot. Теперь у меня проблема, что команда make терпит неудачу, крича, что правило headers_install неизвестно.

Вот полный вывод:

~/buildroot-2011.11$ make
(cd /root/buildroot-2011.11/output/toolchain/linux-2.6.12.6; \
         /usr/bin/make -j2 ARCH=mips \
                HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" \
                HOSTCXX="/usr/bin/g++" \
                INSTALL_HDR_PATH=/root/buildroot-2011.11/output/toolchain/linux headers_install; \
        )
make[1]: Entering directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
Makefile:485: .config: Datei oder Verzeichnis nicht gefunden
make[1]: *** Keine Regel, um »headers_install« zu erstellen.  Schluss.
make[1]: Leaving directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
make: *** [/root/buildroot-2011.11/output/toolchain/linux/.configured] Fehler 2

Я думаю, проблема в том, что это старое ядро ​​не имеет этой опции в make-файле.

Моей следующей попыткой было использовать Makefile и каталог scripts нового ядра 3.2.6, заменив старый.

Вот результат:

# make
(cd /root/buildroot-2011.11/output/toolchain/linux-2.6.12.6; \
         /usr/bin/make -j2 ARCH=mips \
                HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" \
                HOSTCXX="/usr/bin/g++" \
                INSTALL_HDR_PATH=/root/buildroot-2011.11/output/toolchain/linux headers_install; \
        )
make[1]: Entering directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
  CHK     include/linux/version.h
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/unifdef
Makefile:1059: *** Headers not exportable for the mips architecture.  Schluss.
make[1]: Leaving directory `/root/buildroot-2011.11/output/toolchain/linux-2.6.12.6'
make: *** [/root/buildroot-2011.11/output/toolchain/linux/.configured] Fehler 2

Не знаю, что я могу попробовать сейчас. Что я должен делать?


person rekire    schedule 19.02.2012    source источник
comment
Вероятно, проще всего было бы переключиться на более старую версию Buildroot.   -  person Shawn J. Goff    schedule 29.04.2012
comment
Привет, ekire, я столкнулся с той же проблемой, мне нужно собрать набор инструментов mipsel на основе ядра 2.6.10. Вам удалось обойти эту проблему? Буду признателен за любую информацию...   -  person Oleg    schedule 24.03.2015
comment
Нет, я просто забросил этот проект. Я перешел на RaspberryPi.   -  person rekire    schedule 24.03.2015


Ответы (3)


Все современные инструменты, которые создают цепочки инструментов для кросс-компиляции, полагаются на ядро, реализующее цель headers_install. Итак, как предложил Шон, вы можете попробовать более старую версию Buildroot, но я думаю, что мы использовали исключительно headers_install уже довольно долгое время, поэтому вам придется вернуться в прошлое и столкнуться со многими другими проблемами.

А как насчет обновления ядра?

person Thomas Petazzoni    schedule 11.05.2012
comment
вы можете попробовать более старую версию Buildroot -- Ранние версии Buildroot (например, 20070706) не позволяют собирать ядро ​​Linux; он просто делает то, что следует из его названия: создает корневую файловую систему. Buildroot-20080424 может скомпилировать ядро ​​Linux, но только начиная с версии 2.6.20. - person sawdust; 20.12.2014
comment
А как насчет обновления вашего ядра? - это предложение не подходит в общем случае для встроенных систем с проприетарным IP-оборудованием, таким как радиомодуль, видео поверх IP, сетевой процессор и тому подобное. Эти системы часто продаются с проприетарным микропрограммным обеспечением и другими двоичными объектами, которые требуют значительной поддержки поставщика для обновления ядра. - person Jonathan Ben-Avraham; 14.01.2020

Если вы используете инструментальную цепочку с нуля с помощью buildroot, вы можете настроить файлы заголовков инструментальной цепочки, а затем собственное ядро ​​в соответствии с инструментальной цепочкой, это будет нормально.

person liunx    schedule 19.08.2013

Вы должны заменить headers_install на install в файле:

пакет /linux-fusion/linux-fusion.mk

есть линия

$(TARGET_CONFIGURE_OPTS) $(MAKE) $(LINUX_FUSION_MAKE_OPTS) INSTALL_MOD_PATH=$(STAGING_DIR) -C $(@D) headers_install

Найдено здесь.

person Stanislav Reshetnev    schedule 23.06.2015