0

Solaris 10 시스템에 Python cryptography 패키지를 설치하려고합니다. 내 홈 디렉토리에 Python 2.7 및 libffi 소스를 빌드했습니다. 나는 libffi의 경로를 지정하여 cffi을 구축 할 수 있습니다 :Solaris 10의 소스에서 Python 암호화 패키지 설치

$ 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 

내가 /export/home/ef/libffi/libLD_LIBRARY_PATH을 설정했습니다.

cffi를 컴파일 할 때 다음 경고가 표시됩니다. 관련 될 수 있습니까?

c/call_python.c:219: warning: implicit declaration of function `__sync_synchronize' 

어떻게 해결할 수 있습니까? 관련 OS 패키지 (e.g.sudo apt-get install build-essential libssl-dev libffi-dev python-dev)를 설치하면 온라인에서 발견 된 비슷한 문제가 모두 해결되었습니다. OpenCSW는 옵션이 아닙니다.

답변

0

__sync_synchronize은 내장 기능이지만 gcc와 clang에서만 지원됩니다. 난 당신이 다른 컴파일러 또는 gcc 또는 clang 아주 오래된 버전을 사용하고있는 것 같아요. cffi 트렁크에서 설치를 시도 할 수 있습니까? 우리는 최근 다른 컴파일러에 대한 지원을 추가했습니다 (아직 릴리즈되지 않았으며 버전 1.10에있을 예정입니다).

https://bitbucket.org/cffi/cffi/downloads?tab=branches, (예 : gz을 클릭하여) '기본'분기를 다운로드하십시오.

+0

답장을 보내 주셔서 감사합니다. gcc 버전 3.4.3을 사용하고 있습니다. 나는 트렁크에서 cffi를 컴파일 (cffi-cffi-3234afed406d.tar.gz) 제안했다. 그러나, 나는 아직도 치명적이다 : 암호화를 만들려고 할 때 재배치 오류. – ef99

+0

그건 사실 아주 오래된 gcc입니다. ''__sync_synchronize()''가 추가 된 버전을 확인하면 버전 검사를 추가해야합니다. 그 동안''#if defined (__ GNUC __)''를''#if 0''으로 바꾸고''call_python.c' 파일을 180 행 편집 할 수 있습니다. (경고 메시지가 나타나면 무시할 수 있습니다. 임베디드 모드에서 다중 스레드 초기화를 수행하지 않음) –

+0

완벽하게 작동했습니다. gcc를 업그레이드하는 것보다 훨씬 쉽습니다! :) – ef99