2009-09-07 5 views
3

Je me réfère à la source suivante: http://clpbar.sourceforge.netconstruction de la ligne de commande pour produire un binaire pour Mac OS 10.5 (et 10.6)

processus de construction est la norme: ./configure suivie make

Si je construis sur 10,5 Je reçois un fichier binaire dont file contient: Mach-O executable i386
Si je construis sur 10.6 Je reçois un fichier binaire dont file contient: Mach-O 64-bit executable x86_64

Comment puis-je construire à partir de la commande ligne sur 10.6 et produire un exécutable de type Mach-O executable i386, ou mieux encore un binaire universel contenant des exécutables des deux types.

Veuillez tester toutes les solutions suggérées.

Merci,
mat

Répondre

3

des forums dev d'Apple:

./configure CC="gcc -arch i386" CXX="g++ -arch i386" 

Ce qui fonctionne parfaitement.

+0

Je suppose que cela ne construit pas un binaire universel avec les deux types? – rogerdpack

+0

@rogerdpack l'essayer et voir. inspectez le binaire avec la commande 'file' pour voir quelles architectures il inclut. Aussi, voir les autres réponses. –

1

Utilisez un drapeau -arch pour chaque cible. Ainsi, par exemple

gcc -arch i386 -arch x86_64 ... 

construirait un gros binaire avec les deux. Je crois que par défaut gcc construit sur l'architecture cible, qui est x86_64 avec OSX 10.6.

3

Par défaut, la version de GCC distribuée avec OS X 10.6 génère des binaires 64 bits. La version de GCC distribuée avec 10.5 génère des binaires 32 bits par défaut.

Avant d'exécuter ./configure, définissez quelques variables d'environnement. Si vous voulez qu'il soit un binaire universel Intel avec le code i386 et x86_64, définissez les variables suivantes (en supposant que vous utilisez bash):

export CFLAGS="-arch i386 -arch x86_64" 
export CXXFLAGS=$CFLAGS 
export LDFLAGS=$CFLAGS 

Cela indiquera le script de configuration pour passer ces options de compilateur et l'éditeur de liens, et ainsi construire un binaire avec les deux architectures i386 et x86_64.

Ou, si vous voulez construire seulement comme un binaire i386:

export CFLAGS="-arch i386" 
export CXXFLAGS=$CFLAGS 
export LDFLAGS=$CFLAGS 
+0

J'ai juste essayé ceci et cela n'a pas fonctionné. Se pourrait-il que les variables d'environnement soient remplacées par ./configure? –

Questions connexes