我正在尝试从源代码构建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 of
tmpnam_r' is dangerous, better use mkstemp'
libpython2.7.a(posixmodule.o)(.text+0x3f76): In function
posix_tempnam':
./Modules/posixmodule.c:7301: warning: the use of tempnam' is dangerous, better use
mkstemp'
./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
目录中存在的文件。
答案 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)
(/ 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