构建针对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
制作规范。任何反馈都表示赞赏。谢谢!
答案 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>