Можно ли скомпилировать библиотеку Android для ARMV6 и опционально с VFP?

Я сейчас пользуюсь -mfloat-abi=softfp -mfpu=vfp

Я думаю, что вышеупомянутая линия требует устройства ARMV6 с реальной поддержкой VFP.

Что делать, если я использую -mfloat-abi=soft? Будет ли это работать на устройствах ARMV6 без реальной поддержки VFP, но будет быстрее, чем даже не указывать mfloat-abi?

(Я не хочу создавать толстый двоичный файл с 2 .so файлами)

1 ответ

Решение

Информационная страница gcc гласит:

Определение soft заставляет GCC генерировать вывод, содержащий библиотечные вызовы для операций с плавающей точкой. softfp позволяет генерировать код с использованием аппаратных инструкций с плавающей запятой, но все еще использует соглашения о вызовах с плавающей запятой. hard позволяет генерировать инструкции с плавающей запятой и использует специфичные для FPU соглашения о вызовах.

Итак, используя soft не то, что вы хотите для целей с FPU.

Большинство устройств, поставляемых в настоящее время, имеют процессор ARMv7-A или выше, поэтому, если вы не ориентируетесь на конкретное устройство, я не уверен, насколько ценным является создание двух общих библиотек.

Обновление: на самом деле много устройств поставляются со старыми процессорами. Все высококлассное оборудование - ARMv7-A, но в бюджетных устройствах много громкости.

ARMv6 + VFP - это не конфигурация, поддерживаемая Play Store - целью было сохранить как можно меньший набор конфигураций. Вам нужно будет использовать толстый двоичный файл или (как кажется, вы это делаете) тщательно сконфигурировать свою сборку и перечислить конкретные устройства в Play Store.

Другие вопросы по тегам