2013-03-17 3 views
1

Création d'une application Qt ciblant Lion et Mountain Lion. Le serveur de construction est sur Mountain Lion. J'ai une dépendance de 32 bits donc j'ai compilé Qt 4.8.4 à partir de la source avec -arch x86. L'application fonctionne bien sur Mountain Lion, mais se bloque au démarrage sur Lion.x86 L'application Qt se bloque sous Mac OS 10.7 (Lion)

Voici le haut de la trace de la pile:

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 

Retrait de la dépendance à l'égard de 32 bits et le renforcement de la distribution pré-construire Qt 4.8.4 résout le problème. Quelqu'un voit-il un problème avec cette configuration de construction Qt?

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

J'ai aussi essayé la spécification make macx-llvm avec le même résultat. Tout commentaire est apprécié. Merci! Pourquoi ne pas utiliser homebrew ou les fichiers binaires officiels?

Répondre

0

Les deux fonctionnent bien pour moi.

+0

Merci pour la suggestion. J'essaie d'obtenir homebrew pour construire Qt en mode 32 bits. La formule Qt passe sur 'MacOS.prefer_64_bit?', Qui appelle simplement/usr/sbin/sysctl -n hw.cpu64bit_capable'. J'ai piraté la méthode 'prefer_64_bit?' Pour retourner juste 'false', ce qui semblait fonctionner puisque la ligne'./Configure' contenait '--arch x86'. Cependant, les fichiers de structure produits étaient toujours 'x86_64'. Si vous avez réussi à obtenir un homebrew pour créer Qt en mode 32 bits, comment l'avez-vous fait? –

+0

Cela aurait dû être un commentaire. – lpapp

0

J'ai rencontré le même comportement lors de la construction d'applications QT 32 bits compatibles Lion. J'ai réussi à résoudre ce problème en configurant Qt pour utiliser les anciens SDK pour 10.7, ce qui rendait la compilation rétrocompatible avec Lion. D'abord, j'ai obtenu le MacOSX10.7.sdk dans le cadre d'une ancienne version de Xcode via Apple Developer Center. Les plus récentes de Lion sont intégrés dans le DMG pour Xcode 4.3.3 (xcode_4.3.3_for_lion.dmg), juste monter le DMG et les copier de /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs à votre Xcode en cours ou à un /Developer/SDKs/MacOSX10.7.sdk

plus générique Ensuite, configurer l'intervalle QT (4.8.6 dans mon cas) avec un paramètre sdk supplémentaire pour correspondre à l'emplacement cible des SDK.

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

0

J'ai eu la même question lors de la construction de la bibliothèque Qt 4.8.6 pour la plate-forme win32. Après une longue enquête, j'ai identifié la solution dans Qt bug 27219, "Ce crash peut être résolu en réglant: export DYLD_FORCE_FLAT_NAMESPACE = 1". Voir: « https://bugreports.qt-project.org/browse/QTBUG-27219?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel »

Pour plus de détails de mise en œuvre, voir: « http://0xced.blogspot.ro/2006/07/dealing-with-outdated-open-source-libs.html » Vous devez mettre à jour dans le fichier Info.plist pour forcer espace de noms plat en définissant la variable d'environnement DYLD_FORCE_FLAT_NAMESPACE. Ceci est réalisé en ajoutant la clé suivante dans votre fichier Info.plist:

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

Ma propre suggestion pour ajouter l'option "-sdk" ci-dessus était suffisante lors de la construction à partir d'OSX 10.8 pour une cible OSX 10.7. Lors de la reconstruction à partir d'OSX 10.10 avec une nouvelle chaîne d'outils xcode 6 pour la même cible OSX 10.7, elle a de nouveau échoué et j'ai redécouvert ce post. Une fois combiné avec votre réponse, le problème a été résolu. – gdh

Questions connexes