1

构建一个针对 Lion 和 Mountain Lion 的 Qt 应用程序。构建服务器位于 Mountain Lion 上。我有一个 32 位依赖项,所以我从源代码编译了 Qt 4.8.4 和-arch x86. 该应用程序在 Mountain Lion 上运行良好,但在 Lion 上启动时崩溃。

这是堆栈跟踪的顶部:

1   QtGui    0x00c6a3e3 QMacPasteboardMime::~QMacPasteboardMime() + 2443
2   QtGui    0x00b904e4 QApplicationPrivate::initializeWidgetPaletteHash() + 6394
3   QtGui    0x00b91420 QApplicationPrivate::initializeWidgetPaletteHash() + 10294
4   QtGui    0x00c051d0 QApplicationPrivate::construct() + 222
5   QtGui    0x00c06052 QApplication::QApplication(int&, char**, int) + 100

删除 32 位依赖项并使用预构建 Qt 4.8.4 发行版进行构建解决了该问题。有人看到这个 Qt 构建配置有问题吗?

./configure \
    -debug-and-release \
    -developer-build \
    -opensource \
    -platform macx-g++ \
    -nomake examples \
    -nomake demos \
    -arch x86

我也尝试了macx-llvm具有相同结果的 make 规范。任何反馈表示赞赏。谢谢!

4

3 回答 3

0

为什么不使用自制软件或官方二进制文件?两者都适合我。

于 2013-03-17T14:27:01.253 回答
0

在构建与 Lion 兼容的 32 位 QT 应用程序时,我遇到了同样的行为。我设法通过将 Qt 配置为使用 10.7 的旧 SDK 来解决这个问题,基本上使构建与 Lion 向后兼容。

首先,我通过 Apple Developer Center 从旧 Xcode 版本中获得了 MacOSX10.7.sdk 作为一部分。最新的 Lion 嵌入在 Xcode 4.3.3 ( xcode_4.3.3_for_lion.dmg) 的 DMG 中,只需安装 DMG 并将它们从您当前的 Xcode 复制/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs到更通用的/Developer/SDKs/MacOSX10.7.sdk

然后,我使用额外的 sdk 参数配置 QT(在我的情况下为 4.8.6)以匹配 SDK 的目标位置。

-sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk

于 2014-06-25T15:08:41.977 回答
0

在为 win32 平台构建 Qt 库 4.8.6 时,我遇到了类似的问题。经过长时间的调查,我确定了Qt bug 27219的解决方案,“这个崩溃可以通过设置解决:export DYLD_FORCE_FLAT_NAMESPACE=1”。请参阅:“ https://bugreports.qt-project.org/browse/QTBUG-27219?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

有关实现细节,请参阅:“ http://0xced.blogspot.ro/2006/07/dealing-with-outdated-open-source-libs.html ”您必须更新到 Info.plist 文件以强制使用平面命名空间设置 DYLD_FORCE_FLAT_NAMESPACE 环境变量。这是通过在 Info.plist 文件中添加以下键来实现的:

<key>LSEnvironment</key>
<dict>
<key>DYLD_FORCE_FLAT_NAMESPACE</key>
<string>YES</string>
</dict>
于 2014-10-20T11:58:17.613 回答