构建OpenSSL以编译Python的可移植版本
我正在尝试从源代码构建Python,需要包含SSL模块,以便我的web scraper使用它 我遇到了找不到SSL的问题,所以我从源代码下载并构建了OpenSSL。问题是,我需要将开发库与OpenSSL一起安装,以便Python在运行构建OpenSSL以编译Python的可移植版本,python,linux,openssl,Python,Linux,Openssl,我正在尝试从源代码构建Python,需要包含SSL模块,以便我的web scraper使用它 我遇到了找不到SSL的问题,所以我从源代码下载并构建了OpenSSL。问题是,我需要将开发库与OpenSSL一起安装,以便Python在运行make时正确运行-lssl参数。我似乎找不到任何关于如何使用开发libs构建OpenSSL的文档,尽管我确信这一定是我所缺少的一些简单的东西 我必须从源头上做到这一点;没有包管理器。我有我的理由 编辑: 我已经更改了一些python配置设置以尝试修复该问题,这就是
make
时正确运行-lssl
参数。我似乎找不到任何关于如何使用开发libs构建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):在函数posix_tmpnam':
/Modules/posixmodule.c:7346:警告:使用
tmpnam\u r'是危险的,最好使用mkstemp'
libpython2.7.a(posixmodule.o)(.text+0x3f76):在函数中
posix_tempnam':
./Modules/posixmodule.c:7301:警告:使用tempnam'是危险的,最好使用mkstemp'
./python:加载共享库时出错:libssl.so.1.0.0:无法打开共享对象文件:没有这样的文件或目录
make:[sharedmods]错误127
正在抛出“无此类文件或目录”以查找确实存在于/home/[username]/openssl src
目录中的文件。默认的openssl构建应使用确保安装
安装相应的头文件和库,只需确保为配置脚本提供正确的前缀(例如,/configure--prefix=/usr
)
如果失败,请发布gcc显示的确切错误
顺便说一下,请考虑使用一个自动化工具,比如Python的构建。我认为标准的食谱要关注SSL的支持(甚至可能下载和编译OpenSSL)。,尽管我对此不确定。默认的OpenSSL构建应该使用确保安装,安装适当的头文件和库,只需确保为配置脚本提供正确的前缀(例如,/configure--prefix=/usr
)
如果失败,请发布gcc显示的确切错误
顺便说一下,请考虑使用一个自动化工具,比如Python的构建。我认为标准的食谱要关注SSL的支持(甚至可能下载和编译OpenSSL)。,虽然我对此不确定。这个答案并不能完全回答我的问题,但我确实找到了我需要知道的内容,所以我将把它发布在这里。我不得不将它要查找的SSL文件的位置更改为/usr
,而不是/usr/local
。默认情况下,RedHat在/usr/l中拥有所有共享库ib
而不是它默认查找的/usr/local/lib
。这个答案并不能完全回答我的问题,但我确实找到了我需要知道的内容,所以我将其发布在这里。我必须将它查找的SSL文件的位置更改为/usr
,而不是/usr/local
。RedHat by默认情况下,所有共享库都位于/usr/lib
中,而不是/usr/local/lib
,这是默认情况下的查找位置。位于Bourne shell(/bin/sh或/bin/bash)中:
在C-shell(/bin/csh或/bin/tcsh)中:
在Bourne shell(/bin/sh或/bin/bash)中:
在C-shell(/bin/csh或/bin/tcsh)中:
也许我误解了make
与make-install
的用法。我认为make-install
所做的只是在不同的位置构建它(例如您指定的/usr/bin)。在任何情况下,我都会在原始邮件中发布我现在遇到的编译错误。由于我工作场所的网络限制,我无法单击您发布的链接:(看起来您没有在系统位置安装库的权限,因此在配置Python时必须提供OpenSSL的路径。我记不太清楚了,但我认为应该将环境变量CFLAGS设置为“-L/home/user/OpenSSL src/lib”(或库的任何目录)在运行Python的configure
脚本之前可能会有所帮助。也许我误解了make
与makeinstall
的用法。我认为makeinstall
所做的只是在不同的位置(例如您指定的/usr/bin)构建它。在任何情况下,我都会在原始邮件中发布我现在遇到的编译错误。由于我工作场所的网络限制,我无法单击您发布的链接:(看起来您没有在系统位置安装库的权限,因此在配置Python时必须提供OpenSSL的路径。我记不太清楚了,但我认为应该将环境变量CFLAGS设置为“-L/home/user/OpenSSL src/lib”(或库的任何目录)在运行Python的configure
脚本之前,请将“/usr/local/lib”更改为您的openssl libchange路径“/usr/local/lib”更改为您的openssl lib路径
$ LD_LIBRARY_PATH=/usr/local/lib
$ export LD_LIBRARY_PATH
$ make
% setenv LD_LIBRARY_PATH /usr/local/lib
% make