i686-cm-linux-gcc: Команда не найдена

Вопрос или проблема

При кросс-компиляции OpenWRT я заменил инструментальную цепочку OpenWRT на инструментальную цепочку архитектуры i686. Но я получаю нижеуказанную ошибку:

make[5]: Выход из директории `/home/hclintel/pankaj/fresh/trunk/build_dir/target-i386_i486_musl-1.1.10/linux-x86_generic/linux-3.18.18'
./scripts/gcc-version.sh: строка 25: i686-cm-linux-gcc: команда не найдена
./scripts/gcc-version.sh: строка 26: i686-cm-linux-gcc: команда не найдена
make[5]: Вход в директорию `/home/hclintel/pankaj/fresh/trunk/build_dir/target-i386_i486_musl-1.1.10/linux-x86_generic/linux-3.18.18'
arch/x86/Makefile:114: stack-protector включен, но поддержка компилятора сломана
Makefile:657: Не удается использовать CONFIG_CC_STACKPROTECTOR_REGULAR: -fstack-protector не поддерживается компилятором
make[5]: i686-cm-linux-gcc: Команда не найдена
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
  CC      kernel/bounds.s
/bin/sh: 1: i686-cm-linux-gcc: не найден
make[6]: *** [kernel/bounds.s] Ошибка 127
make[5]: *** [prepare0] Ошибка 2
make[5]: Выход из директории `/home/hclintel/pankaj/fresh/trunk/build_dir/target-i386_i486_musl-1.1.10/linux-x86_generic/linux-3.18.18'
make[4]: *** [/home/hclintel/pankaj/fresh/trunk/build_dir/target-i386_i486_musl-1.1.10/linux-x86_generic/linux-3.18.18/.modules] Ошибка 2
make[4]: Выход из директории `/home/hclintel/pankaj/fresh/trunk/target/linux/x86'
make[3]: *** [compile] Ошибка 2
make[3]: Выход из директории `/home/hclintel/pankaj/fresh/trunk/target/linux'
make[2]: *** [target/linux/compile] Ошибка 2
make[2]: Выход из директории `/home/hclintel/pankaj/fresh/trunk'
make[1]: *** [/home/hclintel/pankaj/fresh/trunk/staging_dir/target-i386_i486_musl-1.1.10/stamp/.target_compile] Ошибка 2
make[1]: Выход из директории `/home/hclintel/pankaj/fresh/trunk'
make: *** [world] Ошибка 2
hclintel@hclintel-ThinkCentre-M73:~/pankaj/fresh/trunk$ 

Когда я запускаю echo $PATH, я получаю нижеуказанный результат:

/home/hclintel/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Я думаю, что мне нужно изменить путь в конфигурационном файле, но я не могу найти правильное место для изменения пути.

1) Вам нужно найти, где существует i686-cm-linux-gcc.

2) Как вы собираете OpenWRT? Я предполагаю, через Make.
Для этого вам нужно отредактировать Makefile и добавить путь туда.
Должно быть утверждение в одном из Makefile, где назначается компилятор.

Измените

CC=i686-cm-linux-gcc

на

CC=/path/to/i686-cm-linux-gcc

Ответ или решение

Ошибка "i686-cm-linux-gcc: Command not found" при кросс-компиляции OpenWRT

Если вы столкнулись с ошибкой i686-cm-linux-gcc: command not found во время кросс-компиляции OpenWRT, это указывает на то, что система не может найти указанный компилятор. Рассмотрим все шаги, которые помогут вам исправить данную проблему.

1. Проверка наличия компилятора

Первым делом необходимо убедиться, что компилятор i686-cm-linux-gcc установлен на вашем компьютере. Для этого выполните следующую команду в терминале:

which i686-cm-linux-gcc

Если вы ничего не получите в ответ, это означает, что компилятор не установлен или не находится в вашем PATH.

2. Установка компилятора

Если компилятор действительно отсутствует, вам нужно установить его. Обычно, для установки кросс-компилятора для архитектуры i686 можно воспользоваться пакетным менеджером вашей операционной системы. Например, в Ubuntu это можно сделать с помощью следующей команды:

sudo apt-get install gcc-i686-linux-gnu

Если пакет gcc-i686-linux-gnu не поддерживает необходимые функции, возможно, вам потребуется вручную загрузить и установить требуемую версию компилятора.

3. Обновление переменной PATH

Если компилятор установлен, но система его не видит, вам нужно добавить путь к директории с компилятором в переменную среды PATH. Вы можете сделать это, отредактировав файл конфигурации вашей оболочки. Для bash это будет файл ~/.bashrc, а для zsh — ~/.zshrc.

Добавьте следующую строку в конец файла:

export PATH=$PATH:/path/to/your/compiler

Не забудьте заменить /path/to/your/compiler на фактический путь к вашему компилятору. После внесения изменений выполните команду для применения изменений:

source ~/.bashrc  # для bash

или

source ~/.zshrc   # для zsh

4. Настройка Makefile

При сборке OpenWRT с использованием make, вам может понадобиться указать путь до компилятора прямо в Makefile. Найдите строку, где назначается переменная CC. Например:

CC=i686-cm-linux-gcc

Измените её на полный путь к вашему компилятору:

CC=/path/to/i686-cm-linux-gcc

5. Проверка конфигурации

Также убедитесь, что вы правильно настроили конфигурации kernel. Ошибка stack-protector enabled but compiler support broken может указывать на то, что выбранный компилятор не поддерживает некоторые опции компиляции. Проверьте настройки конфигурации, связанные с защитой стека. Возможно, вам нужно отключить CONFIG_CC_STACKPROTECTOR_REGULAR.

6. Запуск сборки

После всех изменений попробуйте снова запустить сборку OpenWRT с командой:

make

Если все прошло успешно, ошибка i686-cm-linux-gcc: command not found не должна появляться.

Заключение

Ошибки при кросс-компиляции могут быть сложными для диагностики, но следуя вышеуказанным шагам, вы сможете выявить и устранить проблему. Убедитесь, что все пути указаны правильно, а необходимый программный инструментарий установлен. Если возникнут дополнительные вопросы, не стесняйтесь обращаться за помощью в сообщества разработчиков OpenWRT.

Оцените материал
Добавить комментарий

Капча загружается...