0

我正在使用 Ubuntu 12.04 64 位计算机上的 Qt creator(v2.5.0 基于 Qt 4.8.1(64 位))编写一个 Qt 程序。它在我的电脑上运行良好,我对此很满意。

但现在我想部署我的应用程序,所以我决定尝试静态构建我的项目。为了做到这一点,我静态编译了 Qt(来自 4.8.3 源代码),我更改了 Qt creator 中的 qmake 选项(将其替换为“静态”选项),并在构建设置中选择了“静态构建”。

起初它似乎工作得很好:我的新可执行文件是 15Mb(而不是通常的 1Mb),当我执行 ldd ./myApp 检查依赖关系时,没有更多的 libQtGui.so.4 和 libQtCore.so.4,该程序似乎运行良好。

然后我意识到 Qt Creator 一直在应用程序输出中大喊大叫:

“Gtk-CRITICAL **: IA__gtk_widget_style_get: 断言 `GTK_IS_WIDGET (widget)' 失败”

这不能太好,这是怎么回事?更糟糕的是,当我尝试加载程序的帮助菜单时,不知何故它无法打开窗口并冻结。帮助菜单只是一个包含 QTextBrowser(显示带有几个 png 图片的 html 文件)和几个按钮的小部件。我在应用程序输出中反复收到以下错误:

* *X 错误:BadDrawable(无效像素图或窗口参数)9 主要操作码:62 (X_CopyArea) 资源 id:0x0**

和一个(或多个?)QNativeImage:无法附加到共享内存段。

这可能与以下事实有关:当我添加 qmake 的静态版本(在 Qt 选项、构建和运行、Qt 版本选项卡中)时,我收到警告:“未安装 qmlviewer”。我不知道。

无论如何,我有点失望和沮丧,部署应用程序比我预期的要困难得多,而且非常烦人。有谁知道如何解决这一问题?

当我在这里时,我还有其他一些小问题:

  1. Qt 创建者做qmake myApp.pro -r -spec linux-g++andmake -w而不是qmakeand有关系make吗?
  2. 我在几个地方阅读以在我的 .pro 文件中添加 LIBS,我也在一个地方阅读我应该写 CONFIG += static,Qt 官方文档说做的事情略有不同(但有一次,我发现它写得非常糟糕且令人困惑),但所有这些似乎都没有做任何事情。有关系吗?

非常感谢您的帮助!

4

2 回答 2

1

这可能与以下事实有关:当我添加 qmake 的静态版本(在 Qt 选项、构建和运行、Qt 版本选项卡中)时,我收到警告:“未安装 qmlviewer”。我不知道。

与添加qmake的静态版本并得到警告“未安装qmlviewer”无关,是正常的

Qt 创建者执行 qmake myApp.pro -r -spec linux-g++ 和 make -w 而不仅仅是 qmake 和 make 是否重要?

不,还好

我在几个地方阅读以在我的 .pro 文件中添加 LIBS,我也在一个地方阅读我应该写 CONFIG += static,Qt 官方文档说做的事情略有不同(但有一次,我发现它写得非常糟糕且令人困惑),但所有这些似乎都没有做任何事情。有关系吗?

我通常用 CONFIG +=static\ release

LIBS+=只有当您加载任何动态库文件或其他不在系统路径中的库文件时,您才必须添加到您的项目中。

于 2012-11-10T12:05:07.297 回答
1
Warning: X Error: BadDrawable (invalid Pixmap or Window parameter)

是 Qt 应用程序的一个已知问题

http://www.iwillfolo.com/quick-fix-one-kdes-common-xorg-errors-x-error-baddrawable/

它是固定的

export QT_X11_NO_MITSHM=1

或者

QT_X11_NO_MITSHM=1 yourapp

QT_X11_NO_MITSHM – 使用 MIT-SHM X11 扩展停止 Qt 形式。

更多信息在这里:

https://en.wikipedia.org/wiki/MIT-SHM

于 2015-09-23T22:25:04.093 回答