2011-02-01 60 views
0

我想從源代碼構建Python,並且需要包含SSL模塊以供我的網頁抓取工具使用。構建OpenSSL以編譯Python的可移植版本

我遇到了SSL未找到的問題,所以我從源代碼下載並構建了OpenSSL。問題是,爲了讓Python在運行make時正確運行-lssl參數,我需要安裝開發庫和OpenSSL。我似乎無法找到任何有關如何使用開發庫來構建OpenSSL的文檔,儘管我確信它只是簡單的我只是想念。

我必須從源代碼執行此操作;沒有包管理者。我有我的理由。

編輯: 我已經改變了一些的蟒蛇配置設置,試圖解決這個問題,這是編譯錯誤,現在我得到:

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 posix_tempnam「: ./Modules/posixmodule.c:7301:警告:使用tempnam' is dangerous, better use mkstemp的」
./python:錯誤而載入共享庫:libssl.so.1.0.0:無法打開共享對象文件:沒有文件或目錄
make:* [sharedmods]錯誤127

正在拋出「no such file or directory」尋找存在於/home/[username]/openssl-src目錄中的文件。

回答

0

這個答案並不完全回答我的問題,但我確實發現了我需要知道的東西,所以我會在這裏發佈。我不得不將它正在尋找的SSL文件的位置改爲/usr而不是/usr/local。默認情況下,RedHat具有/usr/lib中的所有共享庫,而不是/usr/local/lib,這是默認情況下查找的位置。

在Bourne shell的
1

默認的OpenSSL版本應該使用make install安裝適當的頭文件和庫,只要確保爲配置腳本提供了正確的前綴(例如,./configure --prefix=/usr)。

如果失敗,請發佈gcc顯示的確切錯誤。

順便說一下,請考慮使用諸如buildout之類的自動工具來構建Python。我認爲標準配方會照顧SSL支持(甚至可能下載和編譯OpenSSL),但我不確定這一點。

+0

也許我誤解了`make`與`make install`的用法。我認爲所有`make install`都是建立在不同的位置(比如你指定的/ usr/bin)。在任何情況下,我都會在原始消息中發佈我現在得到的編譯錯誤。由於工作場所的網絡限制,我無法點擊您發佈的鏈接。 :( – Andy 2011-02-01 13:24:53

+0

看起來您沒有權限將庫安裝到系統位置,因此在配置Python時必須提供OpenSSL的路徑。我不太清楚,但我認爲在運行Python的`configure`腳本之前,可以將環境變量CFLAGS設置爲「-L/home/user/openssl-src/lib」(或庫的任何目錄)。 – 2011-02-01 14:27:03

1

(/ bin/sh的或/斌/慶典):

$ LD_LIBRARY_PATH=/usr/local/lib 
$ export LD_LIBRARY_PATH 
$ make 
在C-殼

(/ bin中/ csh或/ bin中/ tcsh中):

% setenv LD_LIBRARY_PATH /usr/local/lib 
% make