Сбой gcc со статусом выхода 1 при установке libmemcached
Пытаясь следовать инструкциям python-libmemcached по адресу http://code.google.com/p/python-libmemcached/ меня возникают проблемы на шаге 3 ("установка python setup.py install")
(gigmash_venv)m:python-libmemcached matthewparrilla$ python setup.py build
running build
running build_py
creating build
creating build/lib.macosx-10.3-fat-2.7
copying cmemcached.py -> build/lib.macosx-10.3-fat-2.7
running build_ext
building 'cmemcached_imp' extension
creating build/temp.macosx-10.3-fat-2.7
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c cmemcached_imp.c -o build/temp.macosx-10.3-fat-2.7/cmemcached_imp.o
powerpc-apple-darwin9-gcc-4.0.1: cmemcached_imp.c: No such file or directory
powerpc-apple-darwin9-gcc-4.0.1: no input files
i686-apple-darwin9-gcc-4.0.1: cmemcached_imp.c: No such file or directory
i686-apple-darwin9-gcc-4.0.1: no input files
lipo: can't figure out the architecture type of: /var/folders/0o/0oHT3RmJF80rpIJtdbegzE+++TI/-Tmp-//cc9xQqQ6.out
error: command 'gcc-4.0' failed with exit status 1
Я понятия не имею, что это значит или что делать. У меня есть несколько версий gcc на моем компе (4.0 и 4.2), и я достаточно почерпнул, что это может иметь значение. Полностью потерянный в противном случае.
Заранее спасибо.
[Редактировать: после следования инструкциям @phihag]
Теперь я получаю совершенно другую, но все еще сбивающую с толку ошибку:
(gigmash_venv)m:python-libmemcached matthewparrilla$ python setup.py build
running build
running build_py
running build_ext
building 'cmemcached_imp' extension
gcc-4.0 -fno-strict-aliasing -fno-common -dynamic -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch ppc -arch i386 -g -O2 -DNDEBUG -g -O3 -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c cmemcached_imp.c -o build/temp.macosx-10.3-fat-2.7/cmemcached_imp.o
cmemcached_imp.c:237:36:cmemcached_imp.c:237:36: error: error: libmemcached/memcached.h: No such file or directory
libmemcached/memcached.h: No such file or directory
In file included from cmemcached_imp.c:238:
split_mc.h:14: warning: ‘struct memcached_st’ declared inside parameter list
split_mc.h:14: warning: its scope is only this definition or declaration, which is probably not what you want
split_mc.h:17: warning: ‘struct memcached_st’ declared inside parameter list
In file included from cmemcached_imp.c:238:
split_mc.h:14: warning: ‘struct memcached_st’ declared inside parameter list
(and this goes on for many many more lines)...
1 ответ
Ошибка возникает из-за файла cmemcached_imp.c
не существует, но должен быть скомпилирован на этом этапе.
Сначала отредактируйте файл cmemcached_imp.pyx
и исправьте опечатку в строке 506. Вместо
sys.stderr.write("[cmemcached]%s only support string: %s" % (cmd, key))
следует сказать
sys.stderr.write("[cmemcached]%s only support string: %s" % (cmd, keys))
Затем установите Cython и выполните
$ cython cmemcached_imp.pyx
Cython должен молча генерировать файл cmemcached_imp.c
,
Хотя это исправит немедленную ошибку, вам также может понадобиться заменить
ext_modules=[Extension('cmemcached_imp',
['cmemcached_imp.pyx', 'split_mc.c'],
в setup.py
с
ext_modules=[Extension('cmemcached_imp',
['cmemcached_imp.c', 'split_mc.c'],
В ответ на редактирование:
Если вы будете следовать дословным инструкциям, вам также понадобится libmemcached в вашем локальном каталоге. казнить
$ ln -s $(pwd)/../libmemcached-0.40/libmemcached
в python-libmemcached для достижения этого.