Команда gcc-arm-linux-gnueabi не найдена
Я пытаюсь установить набор инструментов gnu arm для Ubuntu. Сначала я скачал tar из CodeSourcery. Однако, когда я захожу в папку bin, я не могу запустить ни один из двоичных файлов. Я попытался с./ и без и поместил его в PATH, и он продолжает говорить мне "Команда не найдена", но файл находится в папке прямо передо мной. Затем я попытался выполнить команду sudo apt-get install gcc-arm-linux-gnueabi, за исключением того, что после успешного завершения установки я не могу найти его с помощью whereis gcc-arm-linux-gnueabi. Кто-нибудь может помочь?
12 ответов
Компилируете ли вы на 64-битной ОС? Пытаться:
sudo apt-get install ia32-libs
У меня была такая же проблема при попытке скомпилировать ядро Raspberry Pi. Я выполнял кросс-компиляцию на 64-битной Ubuntu 12.04, а для набора инструментов требуется ia32-libs для работы на 64-битной системе.
См. http://hertaville.com/2012/09/28/development-environment-raspberry-pi-cross-compiler/
Соглашение CodeSourcery заключается в использовании префикса arm-none-linux-gnueabi-
для всех исполняемых файлов, а не gcc-arm-linux-gnueabi
что вы упоминаете. Итак, стандартное имя для CodeSourcery GCC будет arm-none-linux-gnueabi-gcc
,
После того, как вы установили CodeSourcery G++, вам нужно добавить каталог CodeSourcery в ваш PATH
,
Как правило, я предпочитаю устанавливать CodeSourcery в каталог, как /opt/arm-2010q1
или что-то типа того. Если вы не знаете, где вы его установили, вы можете найти его, используя locate arm-none-linux-gnueabi-gcc
, однако вам может потребоваться принудительно обновить вашу базу данных с помощью sudo updatedb
до locate
будет работать правильно.
После того, как вы определили, где установлен ваш CodeSourcery, добавьте его в PATH, отредактировав ~/.bashrc
как это:
PATH=/opt/arm-2010q1/bin:$PATH
Также принято и очень удобно определять
CROSS_COMPILE=arm-none-linux-gnueabi-
в вашем .bashrc
потому что с CROSS_COMPILE
Определено, большинство инструментов будет автоматически использовать правильный компилятор для компиляции ARM без каких-либо действий.
Получил ту же ошибку при попытке кросс-компиляции ядра raspberry pi на ubunto 14.04.03 64bit под VM. решение было найдено здесь:
-Установите пакеты, используемые для кросс-компиляции на коробке Ubuntu.
sudo apt-get install gcc-arm-linux-gnueabi make git-core ncurses-dev
-Загрузить цепочку инструментов
cd ~
git clone https://github.com/raspberrypi/tools
-Добавить цепочку инструментов на свой путь
PATH=$PATH:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian:~/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
обратите внимание на версию x64 в команде path
Если вы используете 64-битную ОС, то вам нужно установить дополнительные библиотеки.
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
Я также столкнулся с той же проблемой и решил ее после установки следующей зависимости:
sudo apt-get install lib32z1-dev
Если вы используете 64-битную сборку Ubuntu или Debian (см., Например, 'cat /proc/version'), вы должны просто использовать 64-битные кросс-компиляторы, если вы клонировали
git clone https://github.com/raspberrypi/tools
тогда 64-битные инструменты находятся в
tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64
используйте этот каталог для gcc-toolchain. Полезное руководство по компиляции, которому я следовал, доступно здесь. Сборка и компиляция Raspberry PI Kernel (используйте путь -x64 сверху как ${CCPREFIX})
Это немного нелогично. Этот набор инструментов называется gcc-arm-linux-gnueabi. Для вызова инструментов выполните следующее: arm-linux-gnueabi-xxx
где ххх - это gcc или ar или ld и т. д.
Вы установили цепочку инструментов, скомпилированную для i686, на коробку, в которой работает пользовательская область x86_64.
Используйте виртуальную машину i686.
Мне пришлось кросс-компилировать код C в Ubuntu для ARM. Это сработало для меня:
$ sudo apt install gcc-arm-none-eabi
Позже протестировал на эмуляторе qemu
#Install qemu
sudo apt-get install qemu qemu-user-static qemu-system-arm
#Cross compile "helloworld.c"
$ arm-none-eabi-gcc --specs=rdimon.specs -Wl,--start-group -lgcc -lc -lm -lrdimon -Wl,--end-group helloworld.c -o helloworld
#Run
qemu-arm-static helloworld
Попробуйте следующую команду:
which gcc-arm-linux-gnueabi
Очень вероятно, что команда установлена в /usr/bin
,
Вы можете собрать его с помощью Crosstool-ng.
git clone https://github.com/crosstool-ng/crosstool-ng.git
cd crosstool-ng
git checkout crosstool-ng-1.24.0
./bootstrap
./configure --prefix=${PWD}
make && make install
Чтобы выбрать цепочку инструментов, которую вы хотите создать:
bin/ct-ng arm-unknown-linux-gnueabi
И сделайте правильную конфигурацию:
bin/ct-ng menuconfig
Затем начните строить
bin/ct-ng build
Примечание. Сборка может занять более одного часа .