于是去另一台同样是RHEL 5.5的虚拟机上编译,结果却没有提示缺少这么多库,看来还是第一台服务器上安装RHEL时的开发包安装的不全(教训啊,磁盘空间又不是问题,为了省事直接完整安装多好)。
好吧,问题就是怎么找这个readline包?用wget从网上拷过来一个6.2版的。解压缩,configure,make,make install,之后顺利安装,但是重新清理并配置编译python时,报一个编译readline失败。看来是版本有问题,那么只好找RHEL原版的readline试试了。
在成功编译的虑拟机上用rpm -qa|grep readline查找,发现有:
readline-devel-5.1-3.el5 readline-5.1-3.el5 readline-5.1-3.el5 readline-devel-5.1-3.el5
4个文件,而在本机上却只有非devel版的两个。看来这两个devel版是关键(devel版大约是可以作为模块编译进其它程序的版本)。其它几个编译失败的模块,也都有类似问题。
之前有过一个3.2G的RHEL 5.5 dvd上所有rpm包的备份。解压缩所有rpm文件至/root/server/目录下。进行/etc/yum.repos.d目录下。编辑rhel.repo文件,将其中的baseurl行改为baseurl=file:///root/server/。
然后yum search readline,查到4个包文件,分别是正常版和devel版的readline的32位和64位版。需注意的是,安装包一般来说即使在64位系统下,也需要同时安装32位和64位版才能正常工作。
yum install radline-devel*,于是yum自动查找依赖和安装包。安装完成后重新清理编译python 2.7.3,结果仍是报那个编译模块失败的错误。此时用rpm -qa |grep readline查看,已经与成功编译的那台虚拟机完全一致了,为何还是这种结果?
此时想起开始时安装的readline 6.2。也许是产生了冲突?
用yum erase readline-devel* 删除。再用readline 6.2下的make uninstall 等等清除,最后到/usr/local/include目录下删除了已经为空的readline目录,此目录原来没有,是在readline 6.2在make install时产生的。
再次清理和配置安装python 2.7.3,终于不再提示readline编译失败了,而是跟最初的提示一样,提示readline等模块未编译。此时用yum install readline-devel*重新安装readline,然后重做编译python的步骤。终于,readline模块生成功了。
此时再去Demo/embed目录下编译,各例子程序均编译成功。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/398.html