J'essaye de construire un binaire universel pour un projet au travail, mais je ne peux pas sembler avoir Xcode mis en place correctement pour le faire. Je connais la documentation d'Apple à ce sujet, mais apparemment je ne la lis pas correctement.Comment construire des binaires Universal (ppc/i386) en utilisant Xcode 3.2.2 pour OSX?
Les options de construction Xcode en question semblent être:
- Architectures
- base SDK
- C/C++ version
- Mac OS X cible de déploiement
Dans mon paramètres J'ai les architectures valides suivantes: i386 ppc ppc64 ppc7400 ppc970 x86_64.
Si j'utilise les options suivantes, je reçois un binaire avec i386 et PPC970:
- Architectures: i386 ppc
- SDK de base: Mac OS X 10.5
- Version du compilateur C/C++: GCC 4.0
- Mac OS X cible de déploiement: Mac OS X 10,5
J'ai plusieurs questions à ce sujet:
- Pourquoi PPC970 et non ppc7400 (ou simplement ppc)?
- Quelle est la différence entre les ppcs (ppc, ppc64, ppc7400, ppc970)?
- Comment obtenir un binaire pour tout ppc?
Apparemment, j'ai besoin d'un binaire avec ppc7400 pour travailler sur le Mac Mini que nous avons pour tester. Le Mini a un G4 et exécute OSX 10.5.8. De ce que je peux dire, un binaire avec ppc7400 fonctionne mais pas un avec seulement ppc970.
J'ai essayé plusieurs combinaisons des options de construction ci-dessus, y compris la modification de mon SDK de base à 10.4u. La configuration ci-dessus est la seule qui construit même. Les autres versions échouent, souvent en raison de la non-reconnaissance des fichiers d'en-tête ou des #defines clairement disponibles. Par exemple, si je change mon compilateur en gcc 4.2, j'obtiens des erreurs de recherche de stdarg.h à cause de la directive #include_next et pas de chemin clair pour corriger les en-têtes. Si je dépose mon SDK de base à 4.0, #define FSIZE long n'est plus reconnu malgré le fait de ne pas modifier les includes.
J'apprécierais vraiment tout aperçu que vous pouvez me donner à ce sujet.
EDIT MISE À JOUR
Merci pour l'info.Je comprends les drapeaux maintenant. Mais j'ai un résultat étrange.
Ce sont mes drapeaux de construction maintenant:
GCC_VERSION = 4,0 MACOSX_DEPLOYMENT_TARGET = 10,4 SDKROOT = macosx10.5 GCC_MODEL_TUNING = G3
Ce produit fichier objet (.o) qui ont arch 'ppc' comme indiqué par lipo. Toutes les bibliothèques et frameworks inclus sont 'ppc' ou 'ppc7400' (encore une fois comme indiqué par lipo). Mais, la construction finale est 'ppc970'.
Je suis allé très attentivement pour m'assurer d'avoir tout. Quelqu'un peut-il penser à une raison pour les différences d'architecture ppc?
Je suis même allé jusqu'à créer un nouveau projet (Hello World) et le lier à toutes les librairies et frameworks du premier projet. Bonjour construit comme 'ppc' pas 'ppc970'.
Cela n'a tout simplement aucun sens pour moi.