Кросс-компиляция ядра 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. Или найти уже приготовленный для вас.