2012-01-22 4 views
3

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

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

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

У меня получилось так далеко, что я работал над отсутствующей чувствительностью к регистру на окнах, чтобы я мог извлекать источники ядра с помощью cygwin. Но теперь у меня проблемы с ядром Makefile. Я думаю, что есть некоторые проблемы с путями окна, как я получаю сообщение об ошибке *** 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? Могу ли я использовать toolchain sourcery или IDE для обработки Makefile? Знаете ли вы какой-либо другой способ построить ядро ​​в рамках заданных ограничений?

+0

Вы должны спросить своего поставщика поддержки поставщика и поставщика компилятора. –

+3

Не можете ли вы просто установить виртуальную машину Linux? Это было бы на окнах и занимало бы 30 минут на VirtualBox ... –

ответ

2

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

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

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

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

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

1

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

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

+1

Это именно то, что я узнал сам ...в конце концов я сдался и убедил всех начать строить Linux на Linux, потому что все остальное просто глупо. ^^ – Tobson

+0

Если вы хотите узнать ВСЕ детали, почему это так проблематично, внимательно посмотрите на это [SamyGo] (http: /wiki.samygo.tv/index.php5/Cross-compiling_%28ES_series%29#REQUIREMENTS.21.21) wikientry. – not2qubit