2011-02-01 31 views
0

私はソースからPythonをビルドしようとしています。私は、自分のWebスクレーパーを使用するためにSSLモジュールを組み込む必要があります。OpenSSLをビルドして移植可能なPythonをコンパイルする

SSLが見つからないという問題が発生したため、ソースからOpenSSLをダウンロードしてビルドしました。問題は、makeを実行するときにPythonが-lsslパラメータを正しく実行するためには、OpenSSLと一緒に開発ライブラリをインストールする必要があるということです。開発用ライブラリを使ってOpenSSLを構築する方法についてのドキュメントは見つけられないようですが、私はちょうど私が見逃しているシンプルなものになっているはずです。

私はソースからこれを行う必要があります。パッケージマネージャーなし。私には理由がある。

EDIT: は、私が試してみて、問題を解決するためのpythonの構成設定の数を変更している、これは私が今取得していますコンパイルエラーです:

gcc -pthread -Xlinker -export-dynamic -o python \ Modules/python.o \ libpython2.7.a -lpthread -ldl -lutil -L/home/[username]/openssl-src -lssl -lcrypto -lm
libpython2.7.a(posixmodule.o)(.text+0x4016): In function posix_tmpnam':<br /> ./Modules/posixmodule.c:7346: warning: the use of tmpnam_r」危険である、より有効に活用mkstemp' libpython2.7.a(posixmodule.o)(.text+0x3f76): In function共有ライブラリの読み込み中にエラーが発生しました:libssl.so.1.0.0:共有オブジェクトファイルを開くことができません:いいえそのようなものはありません。ファイルまたはディレクトリ
make:* [sharedmods]エラー127

ディレクトリ「/home/[username]/openssl-src」に存在するファイルを探しています。「このようなファイルやディレクトリはありません」がスローされています。

答えて

0

この回答は私の質問に正確には答えませんが、私が知る必要があったことを知りましたので、ここに投稿します。探していたSSLファイルの場所を/usr/localではなく、/usrに変更する必要がありました。デフォルトでRedHatは、デフォルトでは見ていた/usr/local/libではなく、すべての共有ライブラリを/usr/libにしています。 Bourneシェル(/ bin/shまたは/ bin/bashの)で

1

デフォルトのOpenSSLビルドでは、make installを使用して適切なヘッダーファイルとライブラリをインストールする必要があります。構成スクリプトに正しい接頭辞(例:./configure --prefix=/usr)を指定してください。

これが失敗した場合は、gccが表示する正確なエラーを投稿してください。

ところで、Pythonをビルドするためのbuildoutなどの自動ツールを使用することを検討してください。私は標準的なレシピがSSLサポート(おそらくOpenSSLをダウンロードしてコンパイルすることさえ可能だ)を世話していると思うが、これについてはわかっていない。

+0

おそらく、私は 'make'と' make install'の使い方を誤解しています。私は、すべての 'make install'は、別の場所(指定した/ usr/binなど)にビルドしたと考えました。いずれにせよ、私は元のメッセージになっているコンパイルエラーを投稿します。職場のネットワーク制限のために投稿したリンクをクリックすることはできません。 :( – Andy

+0

システムの場所にライブラリをインストールする権限がないようですので、Pythonを設定するときにOpenSSLへのパスを提供する必要があります。私は正確に覚えていませんが、Pythonの 'configure'スクリプトを実行する前に、環境変数CFLAGSを" -L/home/user/openssl-src/lib "(またはライブラリの任意のディレクトリ)に設定するといいでしょう。 –

1

:Cシェル(/ binに/ cshまたは/ binに/ tcsh)の場合に

$ LD_LIBRARY_PATH=/usr/local/lib 
$ export LD_LIBRARY_PATH 
$ make 

% setenv LD_LIBRARY_PATH /usr/local/lib 
% make 
+1

"/ usr/local/lib"をopenssl libのパスに変更します – Soli

関連する問題