Я пытаюсь установить пакет Python cryptography в систему Solaris 10. Я создал Python 2.7 и libffi из исходного кода в моем домашнем каталоге. Я могу построить cffi, указав путь к libffi:Установка пакета криптографии Python из источника в Solaris 10
$ python setup.py build_ext --include-dirs ~/libffi/lib/libffi-3.2.1/include --library-dirs ~/libffi/lib
Однако попытки построить криптографию неудачу с этой ошибкой:
ImportError: ld.so.1: python: fatal: relocation error: file /export/home/ef/python/lib/python2.7/site-packages/cffi-1.9.1-py2.7-solaris-2.10-sun4v.32bit.egg/_cffi_backend.so: symbol __sync_synchronize: referenced symbol not found
Я поставил LD_LIBRARY_PATH
в /export/home/ef/libffi/lib
.
Я замечаю следующее предупреждение, когда компилирую cffi - не может быть это связано?
c/call_python.c:219: warning: implicit declaration of function `__sync_synchronize'
Как это разрешить? Все подобные проблемы, которые я нашел в Интернете, были исправлены путем установки соответствующих пакетов ОС (e.g.sudo apt-get install build-essential libssl-dev libffi-dev python-dev
). OpenCSW не является вариантом.
Спасибо за ваш ответ. Я использую gcc версии 3.4.3. Я собрал cffi из туловища (cffi-cffi-3234afed406d.tar.gz), как было предложено. Тем не менее, я все еще получаю такую же фатальную ошибку при перемещении, когда я пытаюсь построить криптографию. – ef99
Это действительно очень старый gcc. Я должен добавить проверку версии, если я узнаю, в какой версии был добавлен '' __sync_synchronize() ''. Тем временем вы можете редактировать файл '' call_python.c'' строку 180, заменяя '' #if defined (__ GNUC __) '' на '' #if 0'' (тогда вы получаете предупреждение, которое вы можете игнорировать, если вы «Не выполняйте многопоточную инициализацию во встроенном режиме) –
Это отлично работает, спасибо. Гораздо проще, чем обновить gcc! :) – ef99