0

Python cryptographyパッケージをSolaris 10システムにインストールしようとしています。ホームディレクトリに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() ''がどのバージョンに追加されたのかを知ったらバージョンチェックを追加するべきです。その間、あなたは '' call_python.c''ファイルを180行編集し、 '' #if defined(__ GNUC __) ''を '' #if 0''に置き換えることができます(警告を受け取ります。組み込みモードでマルチスレッド初期化を行っていない) –

+0

これは完璧に働いてくれてありがとう。 gccのアップグレードよりもずっと簡単です! :) – ef99

関連する問題