Кросс-компиляция ядра Linux для ARM в Windows с использованием Sourcery Toolchain

Я пытаюсь кросс-компилировать ядро Linux для ARM-цели ( Freescale i.Mx28) на хосте Windows. Я знаю, что этот подход не самый лучший по сравнению с использованием хоста Linux, но, к сожалению, я не должен решать это.

Ограничения:

  • Ядро должно быть тем, которое предоставлено Freescale ( L2.6.35_MX28_SDK_10.12)
  • Он должен быть собран с использованием Sourcery Toolchain и CodeBench
  • Все это должно быть сделано на Windows

Я дошел до того, что обошел проблему отсутствия чувствительности к регистру в Windows, чтобы можно было извлечь исходники ядра с помощью cygwin. Но теперь у меня проблемы с ядром Makefile. Я думаю, что есть некоторые проблемы с путями Windows, как я получаю сообщение об ошибке *** multiple target patterns. Stop., который исходит от : в путях и других ошибках, касающихся проверки зависимостей при настройке:

      HOSTCC  scripts/basic/fixdep
    /usr/bin/sh: scripts/basic/fixdep: cannot execute binary file
    make[1]: *** [scripts/basic/fixdep] Error 126
    make: *** [scripts_basic] Error 2

Есть ли способ портировать Makefile без необходимости переписывать его или есть другой способ собрать ядро ​​без использования данного Makefile? Могу ли я использовать исходный инструментарий или IDE для обработки Makefile? Знаете ли вы какой-либо другой способ собрать ядро ​​в рамках данных ограничений?

2 ответа

Решение

Для кросс-компиляции ядра вам понадобятся два компилятора: один, который может создавать инструменты, работающие в вашей среде сборки, и другой, который может создавать исполняемые файлы для вашей цели.

Кажется, что вы на самом деле не кросс-компиляция, но вы только что заменили свой компилятор. Теперь вы создаете инструменты, необходимые для сборки для ARM, и пытаетесь запустить их в Windows.

Вы можете указать, какой кросс-компилятор использовать:

make ARCH=arm CROSS_COMPILE=your-compiler-prefix- ...

У вас также может быть проблема с файловой системой. Файловая система в Windows нечувствительна к регистру, и сборка ядра может создавать файлы там, где важен регистр. Чтобы получить поддержку для файловой системы без учета регистра в Windows, вы можете взглянуть на Windows Services for UNIX.

Используйте другой набор инструментов! CodeBench НЕ совместим с созданием Linux на хостах Windows, независимо от того, какие уловки (ложь) они размещают на своем веб-сайте об использовании CYGPATH и т. Д. Я пробовал это сам несколько недель, и проблема в том, что CB принимает пути POSIX, но настаивает на выводе Пути Win32, которые сложно, если не невозможно, контролировать в процедурах Linux Kernel Make. Я не говорю, что это невозможно, я уверен, что это возможно. Но это не стоит времени, что бы ни говорил твой босс. Есть еще проблема для рассмотрения. Другая проблема заключается в том, что инструменты в каталоге Linux sources./scripts не совместимы напрямую со средой Windows и, таким образом, хотя они могут компилироваться, они не работают должным образом. Они должны быть исправлены!

Наилучший шанс, который у вас есть, это компиляция собственного кросс-компилятора с помощью Cygwin. Или найти уже приготовленный для вас.

Другие вопросы по тегам