Python construire à l'aide d'une mauvaise version de GCC sur OS X
Je suis tenter de construire le paquet python pycrypto. OS X a gcc-4.2 installé et pas gcc-4.0, mais python continue à essayer d'utiliser gcc-4.0. Comment puis-je les utiliser gcc-4.2? Ou devrais-je aller à ce sujet d'une manière différente.
J'obtiens l'erreur suivante:
bash-3.2$
bash-3.2$ sudo python setup.py build
running build
running build_py
running build_ext
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash.MD2' extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch ppc -arch i386 -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/MD2.c -o build/temp.macosx-10.3-fat-2.6/src/MD2.o
unable to execute gcc-4.0: No such file or directory
error: command 'gcc-4.0' failed with exit status 1
bash-3.2$
bash-3.2$
bash-3.2$
Je suis sous Mac OS X 10.6.7 avec python 2.6.6 et XCode est installé.
EDIT: Si j'ajoute CC=gcc-4.2, alors que j'ai toujours l'erreur:
bash-3.2$
bash-3.2$ export CC=gcc-4.2
bash-3.2$ python setup.py build
running build
running build_py
running build_ext
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash.MD2' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -std=c99 -O3 -fomit-frame-pointer -arch i386 -arch x86_64 -Isrc/ -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/MD2.c -o build/temp.macosx-10.3-intel-2.6/src/MD2.o
gcc-4.0 -g -bundle -undefined dynamic_lookup -arch i386 -arch x86_64 build/temp.macosx-10.3-intel-2.6/src/MD2.o -o build/lib.macosx-10.3-intel-2.6/Crypto/Hash/MD2.so
unable to execute gcc-4.0: No such file or directory
error: command 'gcc-4.0' failed with exit status 1
bash-3.2$
EDIT: Il semble que l'utilisation de sudo permet de faire une différence ici.
J'ai essayé d'utiliser les deux CC et CXX comme suggérer par Adam, et j'obtiens l'erreur suivante sans sudo:
bash-3.2$ python setup.py build
running build
running build_py
creating build/lib.macosx-10.3-fat-2.6
creating build/lib.macosx-10.3-fat-2.6/Crypto
copying lib/Crypto/__init__.py -> build/lib.macosx-10.3-fat-2.6/Crypto
copying lib/Crypto/pct_warnings.py -> build/lib.macosx-10.3-fat-2.6/Crypto
...
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash.MD2' extension
creating build/temp.macosx-10.3-fat-2.6
creating build/temp.macosx-10.3-fat-2.6/src
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -arch ppc -arch i386 -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/MD2.c -o build/temp.macosx-10.3-fat-2.6/src/MD2.o
/usr/libexec/gcc/powerpc-apple-darwin10/4.2.1/as: assembler (/usr/bin/../libexec/gcc/darwin/ppc/as or /usr/bin/../local/libexec/gcc/darwin/ppc/as) for architecture ppc not installed
Installed assemblers are:
/usr/bin/../libexec/gcc/darwin/x86_64/as for architecture x86_64
/usr/bin/../libexec/gcc/darwin/i386/as for architecture i386
lipo: can't open input file: /var/tmp//ccxan625.out (No such file or directory)
error: command 'gcc-4.2' failed with exit status 1
Si j'utilise sudo, j'obtiens l'erreur suivante où il essaie d'utiliser 4.0:
bash-3.2$ sudo python setup.py build
Password:
running build
running build_py
running build_ext
warning: GMP library not found; Not building Crypto.PublicKey._fastmath.
building 'Crypto.Hash.MD2' extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -arch ppc -arch i386 -std=c99 -O3 -fomit-frame-pointer -Isrc/ -I/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 -c src/MD2.c -o build/temp.macosx-10.3-fat-2.6/src/MD2.o
unable to execute gcc-4.0: No such file or directory
error: command 'gcc-4.0' failed with exit status 1
bash-3.2$
bash-3.2$
Cette petite info en plus évident de ce qui se passe et comment le résoudre? Aucune idée de la raison de l'appel sans sudo est arriver qu'une autre erreur?
Vous devez vous connecter pour publier un commentaire.
Fondée sur le chemin indiqué (
/Library/Frameworks/Python.framework/Versions/2.6
), il semble que vous avez installé une version 32 bits uniquement la version 2.6 de Python, peut-être l'aide d'un python.org programme d'installation. Lorsque vous créez un paquet Python qui comprend un C module d'extension, le Python Distutils inclus avec Python instance va essayer d'utiliser la même version de gcc et le même CPU architectures que Python a été construit avec. Apparemment, vous avez installé le nouveau découpage-bord Xcode 4 qui ne comprend plus gcc-4.0 ou ppc soutien. Les versions de Python que vous utilisez a été construit avec Xcode 3 outils inclus avec Mac OS X 10.6. Vous peut être capable de travailler autour d'elle en substituant le compilateur choix avec:EDIT:
On dirait que ce n'est pas d'aller travailler pour
pycrypto
; sa construction est trop compex. Si vous n'avez pas l'esprit à l'aide de l'Apple fourni la version 2.6 de Python dans OS X 10.6, ce devrait travail:Une autre option serait d'installer le 64-bit/32-bit Python 2.7 programme d'installation à partir de python.org. C'est compilée avec gcc-4.2 et est Intel seulement donc il ne devrait pas y avoir de problèmes lors de l'utilisation de Xcode 4.
Mise à JOUR:
Ici sont les étapes exactes que j'ai utilisé avec Xcode 3. Ils doivent travailler aussi bien avec Xcode 4 est installé:
sudo
fait dans ma réponse à votre autre question similaire. Généralement pour des raisons de sécurité, unsudo
processus de ne pas hériter de la plupart des variables d'environnement à partir de ses parent s,o si vous définissezCC
ouCXX
avant lasudo
étapes, ils ne seront pas vu à l'intérieur de lasudo
ed de commande. C'est pourquoi je vous ai montré comment contourner en faisantsudo bash
etc./usr/bin/python2.6
. Êtes-vous correctement le nettoyage de la zone de construction lorsque vous l'essayer? Essayer de démarrer à partir d'un répertoire vide et archive source et montrer exactement comment il échoue.BTW, c'est un
distutils
problème, Python lui-même n'a pas de compiler quoi que ce soit.Comme vous l'avez découvert, vous pouvez remplacer le compilateur avec le
CC
variable d'environnement. Vous pouvez remplacer l'éditeur de liens est utilisé avec leCXX
variable d'environnement. Je voudrais aussi savoir pourquoi distutils actes de cette façon, mais il n'.MACOSX_DEPLOYMENT_TARGET
), et que la même version de GCC est utilisé (par exemple, le gcc-4.2 OS X 10.6 ne prend pas en charge de la ppc G3 architecture qui est toujours pris en charge par le 32 bits python.org les installateurs), etc.Distutils2
projet en voie d'achèvement, qui vise à remplacer Distutils dans le Python 3.3 de la Bibliothèque Standard et sera également installé dans des existants Pythons (2.4 -> 3.2). packages.python.org/Distutils2 serait le lieu de proposer ou de contribuer à des améliorations dans le code et/ou des documents.-arch ppc -arch i386
. C'est en essayant de compiler pour PPC, mais vous n'avez pas de PPC assembleur, donc, qui échoue. Distutils est à l'aide de ce commutateur parce que votre Python a été à l'origine compilé avec interrupteur. Malheureusement, la seule façon de changer les choses, que je connais, est de recompiler Python. Voir si le--dry-run
commutateur permet d'imprimer toutes les commandes, et vous pouvez supprimer-arch ppc
et de les exécuter manuellement.ARCHFLAGS
commentaire qui pourrait aider.L'accent sur cette erreur:
Le compilateur est vous dire EXACTEMENT quel est le problème.
gcc-4.0
(etgcc-4.2
) n'est pas dans votrePATH
. ASTUCE:which gcc-4.2
, par exemple:En supposant que le vôtre est dans le même endroit, je ne sais pas pourquoi
/usr/bin
n'est pas dans votrePATH
, mais là vous l'avez!Trouver ce que votre
PATH
est:Fixer votre chemin et vous serez sur votre chemin vers l'illumination.