#android #c #clang #linker-errors #qt5.15
#Android #c #лязг #компоновщик-ошибки #qt5.15
Вопрос:
Приложение отлично работает с Qt 5.12.9 для Android. Однако сбой с 5.15.1 на этапе компоновки (компилируется нормально, поскольку устаревший Qt API был исправлен). Сборка arm64-v8a
только для ABI:
qmake ANDROID_ABIS="arm64-v8a" ...
Есть ошибки с несколькими ссылками, подобные этой:
~/Qt/5.15.1/android/include/QtCore/qobjectdefs_impl.h:415: undefined reference to `operator delete(void*)'
obj/QGCMapEngine.o: In function `QList<QString>::append(QString constamp;)':
~/Qt/5.15.1/android/include/QtCore/qlist.h:626: undefined reference to `__cxa_begin_catch'
~/Qt/5.15.1/android/include/QtCore/qlist.h:628: undefined reference to `__cxa_rethrow'
~/Qt/5.15.1/android/include/QtCore/qlist.h:629: undefined reference to `__cxa_end_catch'
~/Qt/5.15.1/android/include/QtCore/qlist.h:644: undefined reference to `__cxa_begin_catch'
~/Qt/5.15.1/android/include/QtCore/qlist.h:646: undefined reference to `__cxa_rethrow'
~/Qt/5.15.1/android/include/QtCore/qlist.h:647: undefined reference to `__cxa_end_catch'
Пытался исправить AndroidManifest.xml
, как указано здесь: Qt для Android известные проблемы, но безуспешно. Воспроизводимо с установленным последним Qt SDK и с Qt, созданным из исходных текстов в docker. Есть идеи, в чем проблема и как ее исправить?
Ссылки:
- Полный список ошибок: qgroundcontrol#9136 (комментарий)
- Проект: qgroundcontrol, ветка: android_build_fix_qt5.15
Ответ №1:
Проблема заключалась в -nostdlib
исправлении взлома в следующей строке: QGCCommon.pri #L60
QMAKE_LINK = -nostdlib # Hack fix
Для 5.15 необходимо удалить его и исправить AndroidManifest.xml
, чтобы правильно собрать APK. Эта строка могла быть удалена для версии 5.12, а также была проблемой ndk20, в то время как в настоящее время Qt Creator устанавливает и использует ndk21 по умолчанию.