2016-02-01 1 views
0

Я пытаюсь создать приложение для ARMv6, но, не удается.построить для ARMv6 с gnueabihf

Я думаю, что проблема заключается в Toolchain, который поддерживает Hard Float, но ARMv6 этого не делает.

Ну, сначала я установил -march = armv6, где компиляция не удалась.

/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/arm-linux-gnueabihf/libc/usr/include/bits/byteswap.h: In function ‘__bswap_32’: /opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/arm-linux-gnueabihf/libc/usr/include/bits/byteswap.h:45:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI

Кроме того, я установил -mfloat-аби = мягкая которые делают компоновщика жалуются:

/opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: error: prog uses VFP register arguments, prog.o does not /opt/gcc-linaro-arm-linux-gnueabihf-4.8-2014.03_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/../../../../arm-linux-gnueabihf/bin/ld: failed to merge target specific data of file prog.o

Ну, как же я на самом деле построить для ARMv6? Или есть ошибка в Toolchain?

+0

Вы используете Linux? Linaro для Linux OS/glibc, и у вас будет проблема, если вы не скомпилируете с '-ffreestanding'. Я предлагаю вам использовать [компилятор newlib] (https://launchpad.net/gcc-arm-embedded), если вы действительно встроены. Стартовая панель имеет несколько сборок для разных хостов (включая ядро ​​разработки Linux-хоста). В противном случае вы можете использовать тег 'embedded-linux'. –

ответ

1

Ваша инструментальная цепочка настроена на то, чтобы поменять Thumb-код по умолчанию. Проблема в том, что единственными кодировками Thumb инструкций с плавающей запятой являются 32-разрядные Thumb-2, которые по существу и существуют только на ARMv7 или более поздних версиях * и, конечно же, недоступны на простом ARMv6.

Чтобы настроить целевые архитектуры перед v7, лучше всего скомпилировать -marm для генерации ARM-кода вместо относительно ограниченного набора 16-разрядных инструкций Thumb.

* Я подозреваю, что большинство людей никогда не узнают ARM1156.

+0

Отлично, спасибо. В дополнение к вашему сообщению: у меня был выход из -mfloat-abi = soft, кроме использования -marm. –

+0

@ b-boy Это gnueabi ** hf ** toolchain, так что да, вложенные библиотеки будут только связываться с жесткими плавающими объектами. Вероятно, они тоже Thumb-2, поэтому не ставьте их статически; на самом деле вы хотите строить против искателя целевого устройства, а не минимального, связанного с toolchain, чтобы избежать неприятных сюрпризов и/или тонких несовместимостей. – Notlikethat

 Смежные вопросы

  • Нет связанных вопросов^_^