Как скомпилировать mod_wsgi, mod_fastcgi и т. д. на Mountain Lion (Mavericks), исправив «apxs: Ошибка: команда не удалась с rc = 65536»?

Я обновился до OS X Mountain Lion. Обновление удалило все мои модули Python и Apache, включая mod_wsgi.

Сейчас пытаюсь перекомпилировать mod_wsgi (на Lion скомпилировалось без проблем).

Я использую исходный код отсюда: http://code.google.com/p/modwsgi/wiki/DownloadTheSoftware?tm=2

./configure создает Makefile без проблем:

$ ./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

Но make возвращает ошибку:

$ 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

Ответы (2)

Я решил эту проблему, когда писал вопрос:

По какой-то причине /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/папка (содержащая инструменты командной строки Xcode) находится здесь:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain

Решить проблему:

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

Предложение Грега Бэра для Mavericks:

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

Это создает символическую ссылку на нужную папку.

Следует подчеркнуть, что это проблема с конфигурацией сборки apxs, которую Apple предоставила, насколько мне известно, и не имеет ничего общего с mod_wsgi. Это произошло до того, как был выпущен Mountain Lion, и кто-то каким-то образом отправил отзыв Apple, но Apple не исправила это. Вполне вероятно, что эта проблема повлияет на любую попытку сборки модулей Apache с использованием apxs, а не только mod_wsgi.
Проблема, которую я представил, похоже, связана с утилитой. Почему-то думает, что компилятор (gcc) находится в другой папке. Это просто можно исправить, создав символическую ссылку (подробности см. В моем ответе). sudo make install после этого также работает.
Предполагая то же расположение файла, что и в старой MacOS X, проблема будет заключаться в определениях в /usr/share/httpd/build/config_vars.mk, которые использует apxs.
Как предполагает @GrahamDumpleton, это решение также устраняет проблемы make с mod_fastcgi v2.4.6.
Обратите внимание, что это также работает для Mavericks, но было бы$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.9.xctoolchain

Столкнулся с той же проблемой, однако создание символической ссылки не решило ее для меня. Что действительно сработало, так это добавление флага --disable-frameworkв ./configureкоманду. См. суть для более подробной информации.