构建OpenSSL以编译可移植版本的Python

时间:2011-02-01 12:31:47

标签: python linux openssl

我正在尝试从源代码构建Python,并且需要为我的Web scraper包含SSL模块才能使用它。

我遇到了无法找到SSL的问题,所以我从源代码下载并构建了OpenSSL。问题是,我需要安装开发库和OpenSSL,以便Python在运行-lssl时正确运行make参数。我似乎无法找到有关如何使用开发库构建OpenSSL的任何文档,即使我确信它必须是简单的,我只是缺少。

我必须从源头做到这一点;没有包管理员。我有我的理由。

修改 我已经改变了一些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 oftmpnam_r' is dangerous, better use mkstemp' libpython2.7.a(posixmodule.o)(.text+0x3f76): In functionposix_tempnam': ./Modules/posixmodule.c:7301: warning: the use of tempnam' is dangerous, better usemkstemp'
./python: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
make: * [sharedmods] Error 127

正在抛出“没有这样的文件或目录”,寻找posix_tmpnam':<br /> ./Modules/posixmodule.c:7346: warning: the use of目录中存在的文件。

3 个答案:

答案 0 :(得分:1)

默认的OpenSSL版本应使用make install安装相应的头文件和库,只需确保为配置脚本提供正确的前缀(例如./configure --prefix=/usr)。

如果失败,请发布gcc显示的确切错误。

顺便说一句,请考虑使用buildout之类的自动工具来构建Python。我认为标准配方负责SSL支持(甚至可能下载和编译OpenSSL),虽然我不确定这一点。

答案 1 :(得分:1)

这个答案并没有完全回答我的问题,但我确实找到了我需要知道的内容,所以我会在这里发布。我不得不将其寻找的SSL文件的位置更改为/usr而不是/usr/local。默认情况下,RedHat包含/usr/lib中的所有共享库,而不是/usr/local/lib,这是默认情况下查找的位置。

答案 2 :(得分:1)

Bourne shell中的

(/ bin / sh或/ bin / bash):

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

在C-shell中(/ bin / csh或/ bin / tcsh):

% setenv LD_LIBRARY_PATH /usr/local/lib
% make