Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: компиляция под ARM
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Linux
stas17
Здравствуйте! Около полугода назад удачно собирал данное ядро (причем не один раз) на виртуальной машине в Ubuntu 9_04 под Win_Xp. Сейчас возникла необходимость откомпилировать его еще раз, но на данный момент я перешел на Ubuntu 11 и возникли следующие трудности:


stas17@Intel:/usr/src/linux-2.6.30$ make ARCH=arm CROSS_COMPILE=/home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-
make: /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc: Команда не найдена
scripts/kconfig/conf -s arch/arm/Kconfig
make: /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc: Команда не найдена
CHK include/linux/version.h
make[1]: `include/asm-arm/mach-types.h' не требует обновления.
CHK include/linux/utsrelease.h
SYMLINK include/asm -> include/asm-arm
CC kernel/bounds.s
/bin/sh: /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc: not found
make[1]: *** [kernel/bounds.s] Ошибка 127
make: *** [prepare0] Ошибка 2



Поискал информацию об этом: практически все решают эту проблему исправлением cтроки CROSS_COMPILE , но путь у меня задан правильно.
Судя по всему, проблема в Makefile, потому что не находит кросс-компилятор. Но почему не находит?
Заранее благодарен.
kurtis
попробуйте сделать
Код
make mrproper



команда
Код
ls -l /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
выполняется? Если да, то покажите результат.

Еще можно попробовать заменить dash на bash, иногда помогает.
stas17
Команда ls -l выполняется:
stas17@Intel:~$ ls -l /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
-rwxr-xr-x 2 stas17 sudo 208016 2010-04-17 21:10 /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc


Команда make mrproper работает, но все равно ругается на отсутствие кросскомпилятора:
stas17@Intel:/usr/src/linux-2.6.30$ make mrproper
make: /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc: Команда не найдена
make[2]: /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc: Команда не найдена
CLEAN .tmp_versions
CLEAN include/asm-arm/mach-types.h
CLEAN scripts/basic
CLEAN scripts/kconfig
CLEAN include/config
CLEAN .config .config.old include/asm include/linux/autoconf.h include/linux/version.h include/linux/utsrelease.h

но это не помогает, остаются все те же ошибки.
Объясните, пожалуйста, как заменить dash на bash.
kurtis
Цитата
Объясните, пожалуйста, как заменить dash на bash.

Код
sudo rm /bin/sh
sudo ln -s /bin/bash /bin/sh

как-то так...

Сейчас у вас такая ситуация
Код
mike@mike-work:/$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2011-03-19 00:07 /bin/sh -> dash

т.е. в качестве shell-оболочки используется dash. Многие советуют использовать bash, т.к. dash имеет некоторые "проблемы" при сборки различных приложений.

Код
stas17@Intel:/usr/src/linux-2.6.30$ make mrproper

почему вы в root собираете? Лучше переместите исходники в вашу домашнюю директорию и делайте все манипуляции только в своей домашней директории.

Цитата
make: /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc: Команда не найдена
make[2]: /home/stas17/toolchain/arm-2010q1/bin/arm-none-linux-gnueabi-gcc: Команда не найдена

У вас, случайно, значение CROSS_COMPILE не задано жестко в Makefile?

Ааа. Вы раньше на этой машине что-то собирали? Может у вас просто необходимых пакетов не стоит? Попробуйте поставить вот это
Код
sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
sudo apt-get build-dep linux
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
Взял от сюда
stas17
Спасибо за объяснение. Shell-оболочку я поменял. Компиляции это не помогло.
Как-то изначально прочитал, что исходники ядра находятся в данной директории, поэтому там их и располагаю. Разве это важно?я же не собираюсь ставить собранное ядро вместо установленного...

Да, в переменной CROSS_COMPILE задан путь к кросскомпилятору, но я так раньше собирал ядро.

Раньше я на этой машине ничего не собирал, но для компиляции ядра поставил необходимые пакеты, но по-видимому не все. Сейчас установлю их и попробую начать компиляцию.
stas17
поставил еще те пакеты, которые Вы перечислили и все равно результат тот же
kurtis
Можно попробовать запустить сборку через команду
Код
sudo make ....
.
stas17
Спасибо большое за помощь! еще раз почистил директорию и сейчас началась компиляция. Наверное причина была в отсутствии необходимых пакетов.

Объясните, пожалуйста, чем плохо, что я собираю ядро в директории /usr/src
mdmitry
Цитата(stas17 @ Aug 25 2011, 18:33) *
Объясните, пожалуйста, чем плохо, что я собираю ядро в директории /usr/src

тем, что директория служебная (не пользовательская) и сборка не для текущей системы, а кросс.
Посмотрите описание (назначение) директорий вашего дистрибутива linux (или аналогичного, можно и unix). Многие вопросы по расположению файлов и прав доступа скорее всего пропадут.
kurtis
Цитата
Спасибо большое за помощь!

Рад что у вас получилось!))

Цитата(stas17 @ Aug 25 2011, 17:33) *
Объясните, пожалуйста, чем плохо, что я собираю ядро в директории /usr/src


Тем что приходиться работать под рутом. Можно что-то сильно испортить. У сотрудника была ситуация, когда он перепутал консоль, и случайно, затер таблицу разделов на своей рабочей машине.
Ну и это системный каталог, если там что-то делать, то остается много мусора, лично меня это раздражает.
stas17
Цитата(mdmitry @ Aug 25 2011, 17:55) *
тем, что директория служебная (не пользовательская) и сборка не для текущей системы, а кросс.
Посмотрите описание (назначение) директорий вашего дистрибутива linux (или аналогичного, можно и unix). Многие вопросы по расположению файлов и прав доступа скорее всего пропадут.




Цитата(kurtis @ Aug 25 2011, 18:19) *
Тем что приходиться работать под рутом. Можно что-то сильно испортить. У сотрудника была ситуация, когда он перепутал консоль, и случайно, затер таблицу разделов на своей рабочей машине.
Ну и это системный каталог, если там что-то делать, то остается много мусора, лично меня это раздражает.


Спасибо большое Вам за объяснения.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.