Я пытался разработать статическую библиотеку (.a) для arm6 / arm7, используя инструментальную цепочку ARM для C ++, Eclipse и Sourcery Lite, для Mac OS. Я успешно настроил (скомпилировал / собрал / настроил) исходный облегченный набор инструментов для Eclipse и смог собрать статическую библиотеку для arm9 без каких-либо ошибок. Каким-то образом он не компилируется / не собирается для arm6 / arm7. Не знаю почему? Я получаю следующую ошибку времени компиляции:
«выбранный процессор не поддерживает режим ARM` bx lr ‘», тот же код работает для arm9.
Но когда я проверяю встроенную статическую библиотеку, используя «lip -info», она говорит: «lipo: архив без спецификации архитектуры: libHelloCppLib.a (не могу определить архитектуру для нее)». Также я не могу использовать эту библиотеку в моем приложении для iPhone.
Может кто-нибудь помочь? что может быть не так в этом? Благодарю вас.
Sourcery CodeBench для Linux поддерживает armv4, armv5 и armv7. Настройка v5 должна хорошо работать на оборудовании v6 / v7.
Если вы используете версию не для Linux («EABI»), то у вас есть armv4, armv6-M и armv7. Я не уверен, что мультилиб «v6-M» подходит вам (это для микроконтроллеров); в этом случае вы могли бы сделать лучше с v4.
это возможный указать архитектуры, отличные от официально поддерживаемых (например, -march=armv6
), и компилятор будет делать правильные вещи (вероятно), но поскольку он не поставляется с библиотеками поддержки, созданными для них (libgcc.a
) ему придется использовать тот, который у него есть (скорее всего, v4), и вы может получить ошибки ссылки. Попробуй и посмотри 🙂
Кстати, если вы используете «Sourcery G ++», это не похоже на последнюю версию. Уже пару лет он называется «Sourcery CodeBench».
Других решений пока нет …