Comment compiler mod_wsgi, mod_fastcgi, etc. sur Mountain Lion (Mavericks) en corrigeant `apxs: Erreur: la commande a échoué avec rc = 65536`?

22

J'ai mis à jour OS X Mountain Lion. La mise à jour a supprimé tous mes modules python et apache, y compris mod_wsgi.

Maintenant j'essaye de recompiler mod_wsgi (il s'est compilé sans problème sur Lion).

J'utilise le code source d'ici: http://code.google.com/p/modwsgi/wiki/DownloadTheSoftware?tm=2

./configure crée Makefile sans problèmes:

$ ./configure
checking for apxs2... no
checking for apxs... /usr/sbin/apxs
checking Apache version... 2.2.22
checking for python... /usr/bin/python
configure: creating ./config.status
config.status: creating Makefile

Mais faites une erreur de retour:

$ make
/usr/sbin/apxs -c -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -DENABLE_DTRACE -DMACOSX -DNDEBUG -DNDEBUG -DENABLE_DTRACE  -Wc,'-arch x86_64' mod_wsgi.c -Wl,-F/System/Library/Frameworks -framework Python -u _PyMac_Error /System/Library/Frameworks/  -arch x86_64 -ldl  -framework CoreFoundation  
/usr/share/apr-1/build-1/libtool --silent --mode=compile /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc    -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/local/include -I/usr/include/apache2  -I/usr/include/apr-1   -I/usr/include/apr-1  -arch x86_64 -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -DENABLE_DTRACE -DMACOSX -DNDEBUG -DNDEBUG -DENABLE_DTRACE  -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo
env: /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc: No such file or directory
apxs:Error: Command failed with rc=65536
.
make: *** [mod_wsgi.la] Error 1
Daniil Ryzhkov
la source

Réponses:

32

J'ai résolu ce problème lors de l'écriture de la question:

Pour une raison quelconque, le /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/dossier (contenant les outils de ligne de commande Xcode) est ici:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain

Pour résoudre le problème:

$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain

Suggestion de Greg Bair pour Mavericks:

$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain

Cela crée un lien symbolique vers le bon dossier.

Daniil Ryzhkov
la source
4
Il convient de souligner qu'il s'agit d'un problème avec la configuration de la construction apxs qu'Apple a fourni pour autant que je sache et rien à voir avec mod_wsgi. Il est apparu avant la sortie de Mountain Lion et quelqu'un a fourni des commentaires à Apple d'une manière ou d'une autre, mais Apple ne l'a pas corrigé. Il est probable que ce problème affecterait toute tentative de création de modules Apache à l'aide d'apxs et pas seulement de mod_wsgi.
Graham Dumpleton
Le problème que j'ai soumis semble être lié à l'utilisation. Pour une raison quelconque, il pense que le compilateur (gcc) est situé dans un autre dossier. Il est simplement réparable en créant un lien symbolique (voir ma réponse pour plus de détails). sudo make install après cela fonctionne également.
Daniil Ryzhkov
En supposant le même emplacement de fichier que l'ancien MacOS X, le problème sera dans les définitions de /usr/share/httpd/build/config_vars.mk qu'apxs utilise.
Graham Dumpleton
Comme @GrahamDumpleton le suggère, cette solution corrige également des problèmes avec mod_fastcgi v2.4.6.
Graham Miln
3
Notez que cela fonctionne également pour Mavericks, mais ce serait $ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain
Greg Bair
2

J'ai rencontré le même problème, mais la création du lien symbolique ne l'a pas résolu pour moi. Ce qui a fonctionné, c'est l'ajout du drapeau --disable-frameworkà la ./configurecommande. Voir l' essentiel pour plus de détails.

talonsensei
la source