Ошибка библиотек Qt-gtk при обновлении приложения с RHEL7 до RHEL9C++

Программы на C++. Форум разработчиков
Anonymous
Ошибка библиотек Qt-gtk при обновлении приложения с RHEL7 до RHEL9

Сообщение Anonymous »

Я совершенно не в себе, пытаясь заставить приложение QT/OpenGL, разработанное в RHEL7, собрать и запустить его в RHEL 9.
Я протестировал две версии, обе имею очень похожую проблему. Первый был спроектирован и создан для RH7, а затем просто помещен в среду RH9 со всеми необходимыми файлами .so. Он выполняет сегментацию перед отображением любого окна и создает следующую обратную трассировку:

Код: Выделить всё

#0  in g_log ()
#1  in load_modules.lto_priv () at /usr/lib64/libgtk-x11-2.0.so.0
#2  in _gtk_modules_settings_changed () at /usr/lib64/libgtk-x11-2.0.so.0
#3  in display_opened_cb.lto_priv () at /usr/lib64/libgtk-x11-2.0.so.0
#4  in g_closure_invoke () at /usr/lib64/libgobject-2.0.so.0
#5  in signal_emit_unlocked_R () at /usr/lib64/libgobject-2.0.so.0
#6  in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#7  in g_signal_emit_by_name () at /usr/lib64/libgobject-2.0.so.0
#8  in gdk_display_open () at /usr/lib64/libgdk-x11-2.0.so.0
#9  in gdk_display_open_default_libgtk_only () at /usr/lib64/libgdk-x11-2.0.so.0
#10 in gtk_init () at /usr/lib64/libgdk-x11-2.0.so.0
#11 in QGtkStyleprivate::getIconThemeName() at ./lib/libQtGui.so.4
#12 in QGuiPlatformPlugin::systemIconThemeName() at ./lib/libQtGui.so.4
#13 in QIconLoader::updateSystemTheme() at ./lib/libQtGui.so.4
#14 in qt_set_x11_resources () at ./lib/libQtGui.so.4
#15 in qt_init () at ./lib/libQtGui.so.4
#16 in QApplicationPrivate::construct () at ./lib/libQtGui.so.4
#17 in QApplication::QApplication () at ./lib/libQtGui.so.4
#18 in main ()
Другая версия была скорректирована таким образом, чтобы она могла встраивать RHEL9 с Qt 5 вместо Qt 4. Она также выдает ошибку перед созданием окна с помощью этой обратной трассировки:

Код: Выделить всё

#0 in g_log ()
#1 in _g_io_module_get_default () at /usr/lib64/libgio-2.0.so.0
#2 in g_vfs_get_default () at /usr/lib64/libgio-2.0.so.0
#3 in g_file_new_for_uri () at /usr/lib64/libgio-2.0.so.0
#4 in gtk_css_provider_load_from_resource () at /usr/lib64/libgtk-3.so.0
#5 in _gtk_css_provider_load_named () at /usr/lib64/libgtk-3.so.0
#6 in settings_update_theme () at /usr/lib64/libgtk-3.so.0
#7 in gtk_settings_get_for_display () at /usr/lib64/libgtk-3.so.0
#8 in display_opened_cb.lto_priv () at /usr/lib64/libgtk-3.so.0
#9 in g_cclosure_marshal_VOID__OBJECTv () at /usr/lib64/libgobject-2.0.so.0
#10 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#11 in g_signal_emit () at /usr/lib64/libgobject-2.0.so.0
#12 in g_signal_emit_valist () at /usr/lib64/libgobject-2.0.so.0
#13 in g_signal_emit_by_name () at /usr/lib64/libgobject-2.0.so.0
#14 in _gdk_x11_display_open () at /usr/lib64/libgdk-3.so.0
#15 in gdk_display_manager_open_display () at /usr/lib64/libgdk-3.so.0
#16 in gtk_init_check () at /usr/lib64/libgtk-3.so.0
#17 in gtk_init () at /usr/lib64/libgtk-3.so.0
#18 in QGtk3Theme::GQtk3Theme () at /usr/lib64/qt5/plugins/platformthemes/libqgtk3.so
#19 in QGtk3ThemePlugin::create () at /usr/lib64/qt5/plugins/platformthemes/libqgtk3.so
#20 in QPlatformThemeFactory::create () at /usr/lib64/qt5/plugins/platformthemes/libqgtk3.so
#21 in QGuiApplicationPrivate::createPlatformIntegration () at /usr/lib64/libQt5Gui.so.5
#22 in QGuiApplicationPrivate::createEventDispatcher () at /usr/lib64/libQt5Gui.so.5
#23 in QCoreApplicationPrivate::init () at /usr/lib64/libQt5Core.so.5
#24 in QGuiApplicationPrivate::init () at /usr/lib64/libQt5Gui.so.5
#25 in QApplicationPrivate::init () at /usr/lib64/libQt5Widgets.so.5
#26 in main ()
Оба инициируются вызовом QApplication app(argc, argv); в main.cpp.
Мне кажется, что у них обоих одинаковая проблема, только в разных версиях Qt. Оба используют общие проходы через gtk_init, display_opened_cb.lto_priv, g_signal_emit_valist и некоторые другие.
Я знаю, что для того, чтобы это приложение работало на RH7, вы должны добавить:

Код: Выделить всё

[Qt]
style='adwaita'
в qt.conf в каталоге запуска и в Trolltech.conf в вашем домашнем каталоге. Если вы этого не сделаете, вы получите несколько иную обратную трассировку, заканчивающуюся на g_log().
Нужно ли мне сделать что-то другое в RHEL9, чтобы сообщить моей среде, что Qt использует стиль gtk? Честно говоря, я ничего не знаю о gtk и не очень много о Qt.
Эта проблема кажется настолько неясной, что я не жду решения, но любая помощь или указания будут очень признательны.

Подробнее здесь: https://stackoverflow.com/questions/786 ... 7-to-rhel9

Вернуться в «C++»