ACE+TAO: 6.3.2
OpenDDS: 3.11
Хост-компилятор: GCC 5.4
Когда я выполняю кросс-компиляцию OpenDDS для Android, я смотрю на ACE_wrappers/build/arm/include/makeinclude/platform_android.GNU, который выполняет кросс-компиляцию для ACE и, по-видимому, только для ARM-v7a.
Причина, по которой я говорю это, заключается в том, что я получаю следующую ошибку при компиляции автоматически сгенерированных файлов в моем приложении ((которые возникают из-за использования opendds_idl в *.idl) и после кучи «В файл, включенный из» строки, заканчивается ...
[exec] /home/me/tools/crystax-ndk/sources/cxx-stl/gnu-libstdc++/5/include/limits:1601:7: internal compiler error: Illegal instruction
[exec] max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
[exec] ^
Я видел что-то подобное раньше, когда компилировал код с неправильными флагами для архитектуры ЦП. Итак, я думаю, что, возможно, в GCC есть какие-то несовместимые настройки цепочки инструментов, которые я использую в своем приложении, и те настройки, которые используются ACE + TAO / OpenDDS? Переменная CROSS_COMPILE в platform_android.GNU — это arm-linux-androideabi-..., которая, насколько я знаю, представляет собой 32-битную цепочку инструментов, то есть arm-v7a, и я не вижу ссылок на v8a. И все же в моем приложении я использую aarch64-linux-android-5. Должны ли они быть совместимы? Можно ли изменить цепочку инструментов?
Что я хотел бы сделать, так это собрать ACE+TAO/OpenDDS/my-application для целевой архитектуры и ABI... arm64: arm64-v8a и использовать набор инструментов NDK и целевой ABI... aarch64-linux-android-5 : arm64-v8a.
Мысли?