x86 Qt应用程序在Mac OS 10.7(Lion)上崩溃

时间:2013-03-17 13:54:47

标签: qt crash x86 osx-lion

构建针对Lion和Mountain Lion的Qt应用程序。构建服务器位于Mountain Lion上。我有一个32位的依赖,所以我用-arch x86从源代码编译了Qt 4.8.4。该应用程序在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制作规范。任何反馈都表示赞赏。谢谢!

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

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

<key>LSEnvironment</key>
<dict>
<key>DYLD_FORCE_FLAT_NAMESPACE</key>
<string>YES</string>
</dict>