Qt для Android, не понимаю ошибки
От: sz36 Россия  
Дата: 12.07.19 00:00
Оценка:
Hi, All

Поставил Qt 5.12.4, и не могу собрать проект, который до этого собирался и работал под Qt 5.10.1. Ошибка следуюшая:

C:\Android\SDK\ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: error: cannot find -lc++
clang++: error: linker command failed with exit code 1 (use -v to see invocation)


Что это значит, что за -lc++, который оно ищет и не может найти? Командная строка линкера такая:

C:\Android\SDK\ndk-bundle/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++ -D__ANDROID_API__=16 -target armv7-none-linux-androideabi -gcc-toolchain C:\Android\SDK\ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 -fno-limit-debug-info -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -Wl,--exclude-libs,libunwind.a --sysroot=C:\Android\SDK\ndk-bundle/platforms/android-16/arch-arm/ -Wl,-soname,libTelemakDevice.so -Wl,-rpath=C:/Qt/5.12.4/android_armv7/lib -Wl,-rpath-link=C:/Qt/5.12.4/android_armv7/lib -Wl,--no-undefined -Wl,-z,noexecstack -shared -o libTelemakDevice.so ComPortAndroid.obj main.obj Group.obj DeviceModel.obj Executer.obj Settings.obj ListDeviceModel.obj JournalModel.obj InfoModel.obj qrc_qml_qml_qmlcache.obj qrc_ini.obj qrc_icon.obj qrc_snd.obj qml_version_js.obj qml_main_qml.obj qml_pages_JournalPage_qml.obj qml_pages_LandScapeMainPage_qml.obj qml_pages_PortraitMainPage_qml.obj qml_pages_SettingsPage_qml.obj qml_pages_InfoPage_qml.obj qml_pages_DeviceModelPage_qml.obj qml_controls_CText_qml.obj qml_controls_CMenu_qml.obj qml_controls_IconTriangleDown_qml.obj qml_controls_MsgDlg_qml.obj qml_controls_CBusyIndicator_qml.obj qml_controls_CJrnlText_qml.obj qml_controls_CButtonIcon_qml.obj qml_controls_CTextInput_qml.obj qml_controls_CButtonTxt_qml.obj qml_controls_CPhoneString_qml.obj qml_controls_CToolTip_qml.obj qml_controls_CMenuItem_qml.obj qml_controls_MouseRegion_qml.obj qml_controls_CToolBarBackArrow_qml.obj qml_controls_CComboBox_qml.obj qml_controls_CEditComboBox_qml.obj qml_controls_CIpString_qml.obj qml_controls_CCheckBox_qml.obj qml_controls_CFrame_qml.obj qmlcache_loader.obj moc_Group.obj moc_DeviceModel.obj moc_Executer.obj moc_Settings.obj moc_ListDeviceModel.obj moc_PlaySound.obj moc_JournalModel.obj moc_InfoModel.obj C:/Qt/5.12.4/android_armv7/lib/libQt5QuickControls2.so -Lc:\Utils\Android\android-ndk-r19c/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a C:/Qt/5.12.4/android_armv7/lib/libQt5Quick.so C:/Qt/5.12.4/android_armv7/lib/libQt5Multimedia.so C:/Qt/5.12.4/android_armv7/lib/libQt5Gui.so C:/Qt/5.12.4/android_armv7/lib/libQt5Qml.so C:/Qt/5.12.4/android_armv7/lib/libQt5Network.so C:/Qt/5.12.4/android_armv7/lib/libQt5AndroidExtras.so C:/Qt/5.12.4/android_armv7/lib/libQt5Core.so -lGLESv2 -LC:\Android\SDK\ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a C:\Android\SDK\ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++.so.16 -llog -lz -lm -ldl -lc


Помогите понять, что оно от меня хочет?
Re: Qt для Android, не понимаю ошибки
От: alpha21264 СССР  
Дата: 12.07.19 09:38
Оценка: 4 (1)
Здравствуйте, sz36, Вы писали:

S>Hi, All


S> Поставил Qt 5.12.4, и не могу собрать проект, который до этого собирался и работал под Qt 5.10.1. Ошибка следуюшая:

S>

S>C:\Android\SDK\ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: error: cannot find -lc++
S>clang++: error: linker command failed with exit code 1 (use -v to see invocation)


Помочь не могу, но задам вопрос.
1) По логу видно, что проект собирается clang-ом. Это так и задумано?
Я почему спрашиваю. У меня сборка делается gcc-ом.
В старой конфигурации как было?
clang и gcc совместимы по библиотекам?

2) Ну вот если в лоб читать, что написано.
Линкер не может найти библиотеку c++.
Она должна лежать в файле что-то типа libc++.so.<а_тут_всякие_циферки>
У тебя этот файл наверняка где-то лежит.
Ты можешь указать линкеру это место -L<путь до каталога с библиотеками>

3) Сам периодически пописываю для Андроида.
На новой машине никак не могу установить среду разработки.
Ты по какой инструкции настраивал среду?
Где брал компоненты (кросскомпилятор, Qt, ant, и всё остальное)?

Течёт вода Кубань-реки куда велят большевики.
Re: Qt для Android, не понимаю ошибки
От: reversecode google
Дата: 12.07.19 10:31
Оценка: 4 (1)
гугл -lc++ решает проблему
почему вы не пользуетесь великим и могучим ГУГЛОМ ?
Re[2]: Qt для Android, не понимаю ошибки
От: sz36 Россия  
Дата: 12.07.19 11:08
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>1) По логу видно, что проект собирается clang-ом. Это так и задумано?

Нет, в смысле, не знаю. Я в системе сборки Qt очень поверхностно разбираюсь, если не сказать, что не разбираюсь совсем. В версии 5.10.1 проект через GCC собирался, и все было хорошо. А в Qt 5.12.4 среди автоопределенных комплектов для Андроид я только вот такой вижу: "Android для armeabi-v7a (Clang Qt 5.12.4 for Android ARMv7)". А как туда добавить GCC я не понимаю.

A>В старой конфигурации как было?

Так получилось, что Qt 5.12.4 при установке снес старую версию (сам виноват, пути попутал), поэтому я теперь не могу посмотреть, по памяти только. Можно, конечно, заново 5.10.1 поставить, но, подозреваю, это будет уже новая конфигурация.

A>Линкер не может найти библиотеку c++.

A>Она должна лежать в файле что-то типа libc++.so.<а_тут_всякие_циферки>
Вообще в командной строке есть такое

C:\Android\SDK\ndk-bundle/sources/cxx-stl/llvm-libc++/libs/armeabi-v7a/libc++.so.16

И файл этот на диске наличествует. Мне представляется, что надо как-то на GCC вернуться. Понять бы, что для этого нужно сделать...

A>3) Сам периодически пописываю для Андроида.

A>На новой машине никак не могу установить среду разработки.
A>Ты по какой инструкции настраивал среду?
QtCreator? Ни по какой, методом тыка. Но там вроде особых проблем не было, только с запуском отладчика под Андроид периодически пляски с бубном приходилось устраивать, он не запускался. К сожалению, это было год назад, и не слишком продолжительно, я не помню подробностей. Запускал какую-то приблуду на телефоне из AndroidStudio, которая разрешала отладку, и gdbserver вручную, тогда отладка из QtCreator работала.


A>Где брал компоненты (кросскомпилятор, Qt, ant, и всё остальное)?

Из AndroidStudio все. А ant вроде как не нужен теперь. Когда-то давно, несколько лет назад и на другом компе, я помню этот ant устанавливал. Но уже 5.10.1 обходился без него.
Re[3]: Qt для Android, не понимаю ошибки
От: Zhendos  
Дата: 12.07.19 11:24
Оценка:
Здравствуйте, sz36, Вы писали:

S>Здравствуйте, alpha21264, Вы писали:


A>>1) По логу видно, что проект собирается clang-ом. Это так и задумано?

S> Нет, в смысле, не знаю. Я в системе сборки Qt очень поверхностно разбираюсь, если не сказать, что не разбираюсь совсем. В версии 5.10.1 проект через GCC собирался, и все было хорошо. А в Qt 5.12.4 среди автоопределенных комплектов для Андроид я только вот такой вижу: "Android для armeabi-v7a (Clang Qt 5.12.4 for Android ARMv7)". А как туда добавить GCC я не понимаю.

S> И файл этот на диске наличествует. Мне представляется, что надо как-то на GCC вернуться. Понять бы, что для этого нужно сделать...


На gcc не стоит возвращаться. Из Android NDK gcc выкинули,
теперь только clang. А Qt естественно собирается с помощью NDK от Google,
и естественно им тоже пришлось выкинуть поддержку gcc. Может у вас какие-нибудь Makefile закешировались
и если их удалить и пересоздать с помощью qmake то все заработает?
Re[2]: Qt для Android, не понимаю ошибки
От: reversecode google
Дата: 12.07.19 11:29
Оценка:
https://evileg.com/ru/forum/topic/984/
Re[2]: Qt для Android, не понимаю ошибки
От: sz36 Россия  
Дата: 12.07.19 11:37
Оценка: +3
Здравствуйте, reversecode, Вы писали:

R>гугл -lc++ решает проблему

В таком виде, конечно, ничего полезного не гуглится (это я и вчера пробовал), но вот с кавычкам — да, помогло.

R>почему вы не пользуетесь великим и могучим ГУГЛОМ ?

Мы пользуемся, пользуемся, только иногда тупим. Я пишу на RSDN где-то одно сообщение в два года, Вы полагаете это слишком часто, и не следует так засорять форум?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.