Кросс-компиляция ядра 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? Есть ли способ собрать ядро ​​в рамках заданных ограничений?


person Tobi    schedule 22.01.2012    source источник
comment
Вам следует обратиться к поставщику поддержки платы и поставщику компилятора.   -  person sessyargc.jp    schedule 24.01.2012
comment
Разве вы не можете просто установить виртуальную машину Linux? Это было бы в Windows и заняло бы 30 минут на VirtualBox...   -  person Quentin Casasnovas    schedule 25.01.2012


Ответы (2)


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

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

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

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

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

person breiti    schedule 24.05.2012

Используйте другую цепочку инструментов! CodeBench НЕ совместим со сборкой Linux на хостах Windows, независимо от того, что они размещают на своем веб-сайте по поводу использования CYGPATH и т. д.

Я пробовал это сам в течение нескольких недель, и проблема в том, что CodeBench принимает пути POSIX, но настаивает на выводе путей Win32, которые трудно, если не невозможно, контролировать в процедурах Linux Kernel Make.

Я не говорю, что это невозможно; Я уверен, что это возможно. Но это не стоит потраченного времени, что бы ни говорил вам ваш босс. Есть еще проблемы для рассмотрения. Еще одна проблема заключается в том, что инструменты в каталоге исходных текстов Linux ./scripts несовместимы напрямую со средой Windows, и поэтому, хотя они могут компилироваться, они не работают должным образом. Их нужно залатать!

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

person not2qubit    schedule 17.01.2013
comment
Это то, что я узнал сам ... в конце концов я сдался и убедил всех начать собирать Linux на Linux, потому что все остальное просто глупо ^^ - person Tobi; 18.01.2013
comment
Если вы хотите узнать ВСЕ детали, почему это так проблематично, внимательно изучите это SamyGo wikientry. - person not2qubit; 30.10.2013
comment
Обновите приведенную выше ссылку. - person not2qubit; 13.07.2019