Вопрос или проблема
В настоящее время я использую Ubuntu 12.0.4 на 64-битной машине. У меня есть отладочная плата AM335X. Вместе с комплектом был предоставлен сжатый ядро (linux 3.2), rootfs, u-boot и ARM-кросс-компилятор (arm-2010q1).
Я распаковал все в подкаталог (/home/brent/work).
Я добавил следующее в мой файл .bashrc:
PATH=/home/brent/work/arm-2010q1/bin:$PATH
CROSS_COMPILE=arm-none-linux-gnueabi-
Также я установил следующее:
sudo apt-get install ia32-libs
Когда я перехожу к сборке u-boot, я выполняю следующее (по инструкции, прилагавшейся к комплекту):
brent@brent~/work/u-boot$ sudo make distclean
awk '(NF && $1 !~ /^#/) { print $1 ": " $1 "_config; $(MAKE)" }' boards.cfg > .boards.depend
brent@brent~/work/u-boot$ sudo make myd_am335x_lcd4.3_config
awk '(NF && $1 !~ /^#/) { print $1 ": " $1 "_config; $(MAKE)" }' boards.cfg > .boards.depend
Конфигурирование для myd_am335x_lcd4.3 - Плата: myd_am335x, Опции: DISPLAY_LCD43
brent@brent~/work/u-boot$ sudo make
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
dirname: отсутствует операнд
Попробуйте 'dirname --help' для получения дополнительной информации.
Генерация include/autoconf.mk
/bin/bash: строка 3: arm-none-linux-gnueabi-gcc: команда не найдена
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
dirname: отсутствует операнд
Попробуйте 'dirname --help' для получения дополнительной информации.
Генерация include/autoconf.mk.dep
/bin/bash: строка 3: arm-none-linux-gnueabi-gcc: команда не найдена
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
dirname: отсутствует операнд
Попробуйте 'dirname --help' для получения дополнительной информации.
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
/bin/bash: arm-none-linux-gnueabi-ld: команда не найдена
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
dirname: отсутствует операнд
Попробуйте 'dirname --help' для получения дополнительной информации.
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
dirname: отсутствует операнд
Попробуйте 'dirname --help' для получения дополнительной информации.
arm-none-linux-gnueabi-gcc -DDO_DEPS_ONLY \
-g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -I/home/brent/CropVentures/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem -pipe -DCONFIG_ARM -D__ARM__ -march=armv5 -Wall -Wstrict-prototypes \
-o lib/asm-offsets.s lib/asm-offsets.c -c -S
/bin/bash: arm-none-linux-gnueabi-gcc: команда не найдена
make: *** [lib/asm-offsets.s] Ошибка 127
Я проверил, что исполняемый файл находится в /home/brent/work/arm-2010q1/bin
Я также не уверен, почему мне нужно использовать sudo в команде? Если я этого не делаю, я получаю ошибку прав.
Любая помощь или информация о том, что я делаю неправильно, будет высоко оценена.
Проверьте, является ли ваша ARM инструментальная цепочка 64-битной, вы можете использовать эту команду:
file <arm-tool-chain>/bin/arm-none-linux-gnueabi-gcc
Если вывод не содержит elf 64 bit, то это не будет работать. Поменяйте ARM инструментальную цепочку с 32-битной на 64-битную.
Ответ или решение
Когда при попытке сборки загрузчика U-Boot в Ubuntu 12.04 на 64-битной машине выводится ошибка /bin/bash: arm-none-linux-gnueabi-gcc: command not found
, это может быть связано с несколькими аспектами. Рассмотрим каждый из них подробно:
-
Предварительные условия:
- Вы используете 64-битную версию Ubuntu 12.04 на машине, а также ARM-компилятор arm-2010q1 для разработки с платформой AM335X. Все соответствующие файлы были разархивированы в подкаталог
/home/brent/work
.
- Вы используете 64-битную версию Ubuntu 12.04 на машине, а также ARM-компилятор arm-2010q1 для разработки с платформой AM335X. Все соответствующие файлы были разархивированы в подкаталог
-
Проблемы с путём к компилятору в PATH:
- Убедитесь, что ваш
.bashrc
файл правильно обновлён. Вы добавили следующий путь:PATH=/home/brent/work/arm-2010q1/bin:$PATH
. Убедитесь, что путь указан правильно и среда оболочки загружена с этими настройками. Это можно сделать, выполнив командуsource ~/.bashrc
.
- Убедитесь, что ваш
-
Архитектура приложения:
- Проверьте архитектуру вашего ARM-компилятора, используя команду:
file /home/brent/work/arm-2010q1/bin/arm-none-linux-gnueabi-gcc
. Если вывод не содержит ELF 64-bit, значит, вы используете 32-битный компилятор. В этом случае, чтобы работать на 64-битной Ubuntu, необходимо установить соответствующие 32-битные библиотеки, что вы уже сделали, установивia32-libs
.
- Проверьте архитектуру вашего ARM-компилятора, используя команду:
-
Проблемы с правами доступа:
- Команды
sudo
могут приводить к тому, что некоторые переменные окружения, такие как PATH, игнорируются. Это может быть причиной того, что компилятор не обнаруживается. Попробуйте выполнить команды безsudo
. - Вероятно, текущий каталог или файлы имеют ограниченные права, что вынуждает использовать
sudo
. Используйтеchown
илиchmod
для изменения прав доступа к нужной директории или файлам.
- Команды
-
Дополнительные шаги:
- Перепроверьте, установлен ли
arm-none-linux-gnueabi-gcc
как исполняемый файл, и он действительно находится в каталогеbin
. - Убедитесь, что другие зависимости также установлены. Установите пакеты, такие как build-essential, crossbuild-essential-armel, если они понадобятся.
- Перепроверьте, установлен ли
Использование 64-битных компиляторов или установка всех необходимых 32-битных зависимостей может помочь избежать проблем в будущем. Эти шаги должны помочь устранить проблему с отсутствием компилятора и обеспечить успешную сборку вашего U-Boot проекта.