2010-02-06 14 views
2

Je construis un outil de ligne de commande C++ dans Xcode. Le projet contient dylibs pour curl, boost et log4cpp.Comment compiler C++ pour OSX 10.4, 10.5 et 10.6 dans Xcode avec les bibliothèques dynamiques

Idéalement, je voudrais construire un binaire universel i386 qui supporte 10.4 à 10.6.

Je ne peux pas sembler obtenir Xcode pour compiler, quand je cible 10.4 il dit des choses comme un tel fichier ou répertoire.

Lorsque je cible 10.6 x_64, il construit bien, mais 10.5 i386 se plaint de ce que mon dylibs n'est pas l'architecture correcte pour 10.5?

Quelle version de GCC dois-je utiliser?

En outre, lorsque je crée un package d'installation avec PackageMaker, où l'installateur doit-il placer les dylibs dont l'outil a besoin? Un grand merci d'avance, Toby.

+0

Ok, donc j'ai besoin de construire les bibliothèques contre le 10.4 sdk, mais cela semble plus facile à dire qu'à faire? Ive set: export MACOSX_DEPLOYMENT_TARGET = 10,4 export CC = "gcc 4.0" export LDFLAGS = "- de i386 arc /Developer/SDKs/MacOSX10.4u.sdk" export CFLAGS = "- Os -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk " Avant d'exécuter ./configure mais ils continuent tous à générer des erreurs! Qu'est-ce que je rate? –

Répondre

2

Les bibliothèques 3ème partie ont été construites pour 10.6 x_64, j'avais besoin de les reconstruire pour 10.4.

J'ai installé le SDK 10.4u en téléchargeant xcode 3.2 et en choisissant 'installer 10.4 support' pendant le processus d'installation. Après la reconstruction de chaque bibliothèque avec GCC 4.0 par rapport au 10.4u sdk, mon projet a été compilé avec succès. J'ai aussi utilisé des bibliothèques statiques, donc je n'ai pas besoin de les inclure dans le programme d'installation.

0

Vous devriez pouvoir sélectionner le SDK 10.4 et le gcc 4.0 et construire un exécutable qui fonctionnera sur n'importe quoi à partir de 10.4.

+0

Cest exactement ce que je pensais, j'ai 10.4 sélectionné comme cible de déploiement OSD Base SDK , GCC 4.0 défini comme le compilateur.Mais je reçois 10428 erreurs de compilation, la plupart du temps à l'intérieur de la bibliothèque std? –

0

Vos bibliothèques sont probablement construites uniquement pour X86_64. Vous devez recompiler vos bibliothèques en tant que binaires universels.

Modifier: Utilisation du SDK 10.4.

+0

Cela a du sens, mais comment exactement le ferais-je? Par exemple les bibliothèques de boost? –

0

Dans le menu Projet, choisissez Définir le SDK actif et sélectionnez Mac OS X 10.4 ici.

Si vous obtenez des erreurs de lien en utilisant ce SDK, vous les bibliothèques probablement ajouté qui ne sont pas construire pour 10,4

Assurez-vous que vous utilisez les bibliothèques 10.4, par exemple libcurl se trouverait dans

/Developer/SDKs/MacOSX10.4u.sdk/usr/lib/gcc/libcurl.dylib 

vous liez probablement avec

/usr/lib/libcurl.dylib 

qui serait la version pour votre système d'exploitation en cours d'exécution (je suppose 10.6)