python zlib, _ssl module not found
因为前些日期,笔记本系统老迈不堪,决定换linux 系统。 因为制作的live usb (ubuntu)的无法安装,每次都是提示怀疑是硬件错误,没办法解决。 哎,无奈。因为没有时间再去刻盘了, 所以就直接装了一个老系统。 linux rhel5 .
废话不说了,因为工作,生活学习,离不开“反强”的, 所以首先把wlan 驱动装好,可以通过wpa_suppliant 连接热点后。 随就开始准备下载python2.7 和 goagent 了。
但是因为rhel5 系统太老,不是python2.7, 源码安装python2.7 实在是让人头疼了。 其实安装不会太复杂, 可是由于系统库太老, 莫名其妙的是安装未提示任何错误, 但是zlib 和 _ssl module 的python模块就是无法安装成功。 气人。
没办法,google 了。
1. zlib 的问题。 由于python2.7 在 configure 的时候不能像老的版本一样, 可以指定 –with-zlib –with-ssl 等参数,所以还真得注意下。 在 python2.7 里的源码包里, 有一个Modules 的文件夹, 里面就是所有的模块 代码了。 Modules/Setup (大写的S)里面,可以将想要编译的模块的配置, 取消注释掉。
(Edit /Modules/Setup and uncomment the line: zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz)
然后再到python2.7 的源码第一级目录里进行编译。 make的时候,一定要注意看log,随时发现问题。 因为编译 modules的时候,即使有错误, 也不会影响编译python2.7 本身。 但是使用的时候, 肯定就会报 modules无法找到了。 zlib可以单独编译 , 在 Modules里有个zlib 文件夹的。
2. _ssl 模块更是奇怪。 我已经将 Modules/Setup 文件进行了修改,包括依赖的openssl 和 crypto 的库的路径 。 google了一番, 还说需要修改 源码包根目录 setup.py 。 好吧又简单看了下代码, 并加上log。 可是发现, _ssl.c 只是编译成了 _ssl.o, 并没有进行下一步, 将 _ssl.o 编译成 _ssl.so 动态连接库。
我去, 各种办法, 不断的尝试重新 ./configure 都无办法, 只有自己 gcc了。
a) 这一步,先 手动将 _ssl.c 编译成 object 文件 _ssl.o
gcc -pthread -fPIC -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/python/include -I. -IInclude -I./Include -I/usr/local/include -I/downloads/Python-2.7.6/Include -I/downloads/Python-2.7.6 -c /downloads/Python-2.7.6/Modules/_ssl.c -o build/temp.linux-x86_64-2.7/downloads/Python-2.7.6/Modules/_ssl.o
b) 将o 编译并连接成为 so文件。
gcc -pthread -shared build/temp.linux-x86_64-2.7/downloads/Python-2.7.6/Modules/_ssl.o -L/usr/local/python/lib -L/usr/local/lib -lm -lssl -lcrypto -o build/lib.linux-x86_64-2.7/_ssl.so
此篇文章已被阅读2615 次