- Русские Блоги
- Разница между arm-linux-gcc, arm-none-eabi-gcc, arm-eabi-gcc, arm-none-linux-gnueabi-gcc
- arm-none-eabi-gcc
- arm-none-linux-gnueabi-gcc
- arm-eabi-gcc
- armcc
- arm-none-uclinuxeabi-gcc и arm-none-symbianelf-gcc
- ABI и EABI
- ABI
- EABI
- arm-linux-gnueabi-gcc и arm-linux-gnueabihf-gcc
- Разница между кросс-компиляцией и локальной компиляцией
- установка
- где есть arm-none-linux-gnueabi
- Русские Блоги
- Ошибка при установке arm-linux-gcc в ubantu: «arm-none-linux-gnueabi-gcc: not found»
Русские Блоги
Разница между arm-linux-gcc, arm-none-eabi-gcc, arm-eabi-gcc, arm-none-linux-gnueabi-gcc
arm-none-eabi-gcc
==(ARM architecture,no vendor,not target an operating system,complies with the ARM EABI)==
Arm официально используется для компиляции голых металлических систем на базе ARM (включая загрузку и ядро ARM Linux, == не применяется для компиляции приложений Linux ==), обычно подходит для основных чипов ARM7, Cortex-M и Cortex-R, поэтому они не поддерживается Функции, тесно связанные с операционной системой, такие как fork (2), используют newlib, библиотеку C, предназначенную для встраиваемых систем.
ссылка для скачивания
arm-none-linux-gnueabi-gcc
==(ARM architecture, no vendor, creates binaries that run on the Linux operating system, and uses the GNU EABI)==
В основном используется для систем Linux, основанных на архитектуре ARM, == может использоваться для компиляции u-boot, ядра Linux, приложений Linux и т. Д. Архитектуры ARM ==. arm-none-linux-gnueabi основан на GCC, использует библиотеку Glibc и является компилятором, оптимизированным Codesourcery. Вычисления с плавающей запятой в инструментах кросс-компиляции arm-none-linux-gnueabi-xxx превосходны. Обычно их используют ядра ARM9, ARM11, Cortex-A и операционная система Linux.
ссылка для скачивания
arm-eabi-gcc
armcc
Инструмент компиляции, запущенный ARM, имеет аналогичные функции с arm-none-eabi. Он может компилировать программы с нуля (u-boot, kernel), но не может компилировать приложения Linux. Armcc обычно работает с ARM. Все компиляторы в Keil MDK, ADS, RVDS и DS-5 являются armcc, поэтому все компиляторы armcc являются платными).
arm-none-uclinuxeabi-gcc и arm-none-symbianelf-gcc
arm-none-uclinuxeabi используется для uCLinux с использованием Glibc.
arm-none-symbianelf используется для Symbian.
ABI и EABI
ABI
Двоичный интерфейс приложения (ABI) для архитектуры ARM. В компьютере двоичный интерфейс приложения описывает низкоуровневый интерфейс между приложением (или другими типами) и операционной системой или другими приложениями.
EABI
Встроенный ABI. Двоичный интерфейс встроенного приложения определяет формат файла, тип данных, использование, оптимизацию организации стека и стандартные соглашения о параметрах во встроенном программном обеспечении. Разработчики, использующие собственный язык ассемблера, также могут использовать EABI в качестве интерфейса с совместимым сгенерированным языком ассемблера.
== Основное различие между ними состоит в том, что ABI находится на компьютере, а EABI находится на встроенной платформе (например, ARM, MIPS и т. Д.). ==
arm-linux-gnueabi-gcc и arm-linux-gnueabihf-gcc
Два кросс-компилятора применимы к двум различным архитектурам, armel и armhf. Armel и armhf используют разные стратегии для операций с плавающей запятой (руки с fpu могут поддерживать эти две стратегии операций с плавающей запятой).
Фактически, эти два кросс-компилятора представляют собой просто разные значения по умолчанию для параметра gcc -mfloat-abi. Параметр gcc -mfloat-abi имеет три значения:
soft, softfp, hard (последние два требуют блока с плавающей запятой fpu в arm, soft совместим с двумя последними, но два режима softfp и hard несовместимы друг с другом):
- soft: не используйте fpu для вычислений с плавающей запятой, даже если есть модуль fpu с плавающей запятой, он не использует его, но использует программный режим.
- softfp: значение по умолчанию, принятое архитектурой armel (соответствующий компилятор — arm-linux-gnueabi-gcc), вычисляется fpu, но параметры передаются обычными регистрами, так что при прерывании нужно сохранять только обычные регистры, и нагрузка прерывания мала, но для пересчета параметры необходимо преобразовать в числа с плавающей запятой.
- жесткий: значение по умолчанию, принятое архитектурой armhf (соответствующее arm-linux-gnueabihf-gcc), вычисляется с помощью fpu, и параметры также используются для передачи с плавающей запятой в fpu, что устраняет необходимость преобразования и имеет лучшую производительность , но нагрузка прерывания высока.
Сохраните содержимое файла C, используемого в следующем тесте, как mfloat.c:
- Используйте arm-linux-gnueabihf-gcc для компиляции, используйте опцию «-v» для получения более подробной информации:
# arm-linux-gnueabihf-gcc -v mfloat.c COLLECT_GCC_OPTIONS=’-v’ ‘-march=armv7-a’ ‘-mfloat-abi=hard’ ‘-mfpu=vfpv3-d16′ ‘-mthumb’ -mfloat-abi=hard
Видно, что используется аппаратный аппаратный режим с плавающей запятой.
# arm-linux-gnueabi-gcc -v mfloat.c COLLECT_GCC_OPTIONS=’-v’ ‘-march=armv7-a’ ‘-mfloat-abi=softfp’ ‘-mfpu=vfpv3-d16′ ‘-mthumb’ -mfloat-abi=softfp
Видно, что используется режим softfp.
Разница между кросс-компиляцией и локальной компиляцией
[Ошибка загрузки изображения . (image-c32fba-1546832274447)]
установка
Установите arm-linux-gnueabi-gcc или arm-linux-gnueabidf-gcc:
sudo apt-get install gcc-arm-linux-gnueabi sudo apt-get install gcc-arm-linux-gnueabihf
Установите arm-linux-gnueabi-g ++ или arm-linux-gnueabidf-g ++
sudo apt-get install g++-arm-linux-gnueabi sudo apt-get install g++-arm-linux-gnueabihf
Удалите arm-linux-gnueabi-gcc или arm-linux-gnueabidf-gcc
sudo apt-get remove gcc-arm-linux-gnueabi sudo apt-get remove gcc-arm-linux-gnueabihf
Удалите arm-linux-gnueabi-g ++ или arm-linux-gnueabidf-g ++
sudo apt-get remove g++-arm-linux-gnueabi sudo apt-get remove g++-arm-linux-gnueabihf
где есть arm-none-linux-gnueabi
Сабж. Рыскаю в инете и не могу найти. Где достать этот набор тулчейнов, никто не знает?
Я хотел оф. сайт, мне нужна версия компилятора для арма gcc, g++ 4.3
Я хотел оф. сайт, мне нужна версия компилятора для арма arm-none-linux-gnueabi-gcc, ..-g++ версии 4.3 и старше.
я еще не компилировал компиляторы.
Собери сам, друже! Собрать тулчейн можно с помощью crosstool-NG.
Это так же просто, как компилировать ядро.
Но если не хочешь связываться с компиляцией и используешь Debian-based дистрибутив, можешь попробовать выполнить sudo apt-get install gcc-arm-linux-gnueabi . Там будут все необходимые тебе пакеты, уже скомпилированные.
Если используешь Source-based дистр, например Gentoo, можешь воспользоваться Crossdev:
# emerge --sync # emerge -av portage-utils crossdev # crossdev --target arm-unknown-linux-uclibc
мне нужна версия компилтяора с поддержкой с++11. Ну вроде кросс тулл подходит
Отлично, только при конфигурировании тулчейна не забудь выбрать GCC версией попозднее, 4.7.X или 4.8.X (практически все фичи стандарта).
Если что, спрашивай тут. Недавно собирал тулчейн с его помощью, правда вместе с древним компилятором.
Спасибо, обязательно. Но пока прочту доки 🙂
Насколько мне известно, сейчас 2 организации на постоянной основе собирают такие тулчейны и выкладывают: Linaro и Mentor Graphics (Code Sourcery). На их оф. сайтах все можно скачать бесплатно и без смс, начиная с самых бородатых версий. Собирать самому не советую.
Кстати, как показала практика, 4.4 меньше всего фокусов выделывает. Рекомендую.
Мои туллчейны кстати тоже от Mentor’a, но чет я там их не вижу, где они?
Тык. Нажимаешь Download и регаешься.
Именно то, что нужно спасибо огромное.
Все совсем наоборот. Хочешь нерешаемые проблемы — связывайся с linaro и codesourcery. Хочешь, чтоб работало и не мешало жить, собирай с crosstools-ng.
Привет. Часом не скажешь как правильно настроить uClibc для сборки приложений. Не получается кросскомпиляция проектов под ARM с использованием uClibc. Засада?!
С помощью crosstool-ng можно собрать arm-linux-uclibc-*, правда не проверял его в деле.
Такой еще вопрос. Я взял последнюю версию сей библиотеки.. Сконфигурировал ее, но сборка не получается, ругается. Добавив часть исходного кода. стала собираться, но собралось только часть исходного кода. libm.a libcrypt.a и еще пара библиотек. Вся либа не собралась. Ошибку дает. Не совсем видит исходники uClinux. Как быть.
Второй вопрос — роль этой библиотеки в uClinux. Насколько она нужна, для разработки прикладного, системного ПО. Последний вопрос такой — как получить elf bflt выходной файл.
Буду рад получить хоть какую-нибудь инфу. на вопросы. Информации мало в сети. почти ничего не нашел. Если есть ссылки на толковые ресурсы в сети, буду рад.
P.S. приложение написал практически в линухе, десктопе.. ни арм. это возможно ввиду того что апи платформонезавимо многое, а до конца написать не могу.. и тем более запустить, проблема. Нужно на uClinux. Плата готова с ним. Последние штрихи нужно сделать. А это не знаю..
Всю систему(u-boot и uClinux) собирал следующим тулом arm-none-eabi-gcc. Плата готова к бою. Софтину не получается собрать.
Привет. Тоже вопрос есть. Я пользую arm-none-eabi-gcc. U-boot, uClinux поставил на плату, не вопрос. А зачем столько разных компиляторов типа arm-linux-gcc и прочего. Можешь объяснить. Что еще нужно поставить, чтобы софт писать?!
Ну если всю систему собирал им, то к чему другой тулчейн брать? Этим arm-none-eabi-gcc и собирай свою программу.
Ясно. С либой uClibc не все гладко. Не получается собрать ее до конца. Только часть библиотеки собирается и все. Можешь подсказать по ней что-нибудь. соответственно приложения не могу написать под uClinux. В книгах мало по этому, инфы тоже в сети не так много.
arm-none-eabi-gcc ставил в ubuntu и в ней юзаю. тут проблем никаких нет. Все ставиться и прописывается, а главное есть. Дальше проблема уже с приложениями. написать не выходит.
Доброе утро. Не выходит — это значит я не могу собрать uClibc, и скомпилировать код в bflt формате elf. uClibc не получается собрать до конца.
Нужна помощь в основном в этом. Последнее что нужно сделать. Не получается развернуть все инструменты, необходимые для разработки, до конца. Все остальное работает, разобрался. Помощь не нужна. Сделал.
Привет котик. Этого инструментария достаточно, чтобы развернуть систему для написания приложений под uClinux? Либа uClibc соберется?
Русские Блоги
Ошибка при установке arm-linux-gcc в ubantu: «arm-none-linux-gnueabi-gcc: not found»
arm-none-linux-gnueabi-gcc: not
found
Версия программного обеспечения: ubuntu-16.04.3 (64-разрядная) arm-linux-gcc-4.4.3
Переключение полномочий администратора команда полномочий суперадминистратора sudo -s
Введите команду arm-linux-gcc -v на терминале, чтобы проверить, успешно ли установлен arm-linux-gcc, и возникнут следующие ситуации:
arm-none-linux-gnueabi-gcc:
not found
Причина этой ситуации в том, что он несовместим с 32-битным кросс-компилятором в 64-битной системе Linux.
Таким образом, решение вышеуказанной проблемы заключается в установке 32-битной библиотеки.64-битная система Linux совместима с кросс-компилятором arm-linux-gcc.
ubantu16.04 версия 32-битная команда установки библиотеки apt-get install
lib32ncurses5 lib32z1
Возникают следующие проблемы: Например, у программного пакета есть неудовлетворенные зависимости.
Решение: команда apt-get -f install
Снова выполните команду apt-get install lib32ncurses5 lib32z1.
Повторно введите команду arm-linux-gcc -v, и проблема возникнет снова: arm-linux-gcc: команда не найдена (как показано выше)
(Примечание: в настоящее время установлен компилятор arm-linux-gcc и конфигурация переменной среды правильная)
Причины могут быть следующие:
exportPATH=$PATH:/usr/local/arm/4.4.3/bin
— установить ПУТЬ текущего пользователя, и когда sudo выполняет make, он использует полномочия суперпользователя, которые также используют ПУТЬ суперпользователя (но в этом ПУТЬ нет / usr /local/arm/4.4.3/bin)
1. Сначала откройте оболочку с полномочиями суперпользователя:
2. В текущей оболочке установите переменную среды:
Команда: gedit / etc / profile
Добавьте экспорт PATH = $ PATH: /usr/local/arm/4.4.3/bin в конец файла и сохраните его.
- Выполнить источник / etc / profile. Это способ избежать перезапуска ubuntu и заставить только что измененную переменную среды вступить в силу.
Затем выполните arm-linux-gcc для компиляции.
Пока что компилятор arm-linux-gcc установлен успешно