我正在使用 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”。我不知道。
无论如何,我有点失望和沮丧,部署应用程序比我预期的要困难得多,而且非常烦人。有谁知道如何解决这一问题?
当我在这里时,我还有其他一些小问题:
- Qt 创建者做
qmake myApp.pro -r -spec linux-g++
andmake -w
而不是qmake
and有关系make
吗? - 我在几个地方阅读以在我的 .pro 文件中添加 LIBS,我也在一个地方阅读我应该写 CONFIG += static,Qt 官方文档说做的事情略有不同(但有一次,我发现它写得非常糟糕且令人困惑),但所有这些似乎都没有做任何事情。有关系吗?
非常感谢您的帮助!