将QT5应用程序部署到ubuntu 12.04

将QT5应用程序部署到ubuntu 12.04,ubuntu,deployment,qt-creator,qt5,glib,Ubuntu,Deployment,Qt Creator,Qt5,Glib,我使用QtCreator和qt5.2.1在ubuntu14.0432位下创建了一个QT应用程序。我使用了QT框架的二进制分布。我遵循了所有关于部署QT应用程序和新安装Ubuntu 14.04的教程,一切似乎都正常。Ubuntu 12.04带来了这些问题。当我尝试运行我的应用程序时,我会遇到那些油嘴滑舌的错误 (进程:11884):GLib-GObject-CRITICAL**:/build/buildd/glib2.0-2.32.4//GObject/gtype.c:2722:您忘记调用g_-t

我使用QtCreator和qt5.2.1在ubuntu14.0432位下创建了一个QT应用程序。我使用了QT框架的二进制分布。我遵循了所有关于部署QT应用程序和新安装Ubuntu 14.04的教程,一切似乎都正常。Ubuntu 12.04带来了这些问题。当我尝试运行我的应用程序时,我会遇到那些油嘴滑舌的错误

(进程:11884):GLib-GObject-CRITICAL**:/build/buildd/glib2.0-2.32.4//GObject/gtype.c:2722:您忘记调用g_-type_-init()

(流程:11884):油嘴滑舌的关键**:g_once_init_leave:assertion`result!=“0”失败

(进程:11884):GLib-GObject-CRITICAL**:/build/buildd/glib2.0-2.32.4//GObject/gtype.c:2722:您忘记调用g_-type_-init()

(进程:11884):GLib-GObject-CRITICAL**:/build/buildd/glib2.0-2.32.4//GObject/gtype.c:2722:您忘记调用g_-type_-init()

(进程:11884):GLib-GObject-CRITICAL**:/build/buildd/glib2.0-2.32.4//GObject/gtype.c:2722:您忘记调用g_-type_-init()

(进程:11884):GLib GObject CRITICAL**:g_类型\添加\接口\静态:断言“g_类型\可实例化(实例\类型)”失败

(进程:11884):GLib-GObject-CRITICAL**:/build/buildd/glib2.0-2.32.4//GObject/gtype.c:2722:您忘记调用g_-type_-init()

(流程:11884):GLib GObject CRITICAL**:g_类型_接口_添加_先决条件:断言“g_类型_IS_接口(接口_类型)”失败

(流程:11884):油嘴滑舌的关键**:g_once_init_leave:assertion`result!=“0”失败

(进程:11884):GLib GObject CRITICAL**:g_类型\添加\接口\静态:断言“g_类型\可实例化(实例\类型)”失败

(进程:11884):GLib-GObject-CRITICAL**:/build/buildd/glib2.0-2.32.4//GObject/gtype.c:2722:您忘记调用g_-type_-init()

有人能帮我修一下吗? 谢谢

Edit1:
应用程序使用sudo运行,没有错误,但不显示图标(libappindicator1)

错误消息告诉您问题所在:

GLib-GObject-CRITICAL... You forgot to call g_type_init()
在2.36之前的版本中,应用程序需要调用函数来初始化库的,显然您的程序没有这样做。(请注意,它可能是您的程序构建时使用GLib的库,而不是您的实际代码。)大概Ubuntu 12附带了比Ubuntu 14更旧的GLib版本,这就解释了它们之间的行为差异

尝试将此代码添加到程序的
main
功能开始处:

if (glib_check_version (2, 36, 0) != NULL)
  g_type_init ();
如果文件尚不存在,您可能还需要在文件顶部添加此包含:

#include <glib-object.h>

在代码的最顶端(在包含GLib头之前),以防止出现这种情况。

哇,它成功了!我注意到这个应用程序可以用sudo正确启动,但如果没有sudo,它需要在ubuntu 12.04上运行g_type_init。问题是我不能使用GLIB_MAJOR_版本宏,因为我在ubuntu 14.04上开发了GLIB 2.40。我改变了答案,建议使用运行时版本检查,而不是编译时版本检查。这更有意义,因为(据我所知)您是在Ubuntu14上构建的,但部署在Ubuntu12上。请尝试一下,让我知道这是否是一个更好的解决方案。
#define GLIB_DISABLE_DEPRECATION_WARNINGS