Ubuntu 18.04编译安装Ruby 1.8.7-p374时OpenSSL编译出错求助
解决Ruby 1.8.7-p374编译时OpenSSL扩展失败的问题
我之前在编译老版本Ruby的时候也碰到过一模一样的OpenSSL编译失败问题,结合你给出的操作步骤,给你几个针对性的解决方法:
1. 先安装OpenSSL的开发依赖包
编译Ruby的OpenSSL扩展需要系统提供对应的头文件和库文件,你可能之前没装,先执行这个命令补全依赖:
sudo apt-get install libssl-dev openssl
如果你的系统是比较老的Debian/Ubuntu版本(比如Ubuntu 12.04之类的),可能需要安装libssl0.9.8-dev来匹配Ruby 1.8.7的兼容性。
2. 重新配置Ruby时指定OpenSSL路径
有时候默认的./configure会找不到OpenSSL的正确位置,你可以在配置阶段手动指定路径:
cd ruby-1.8.7-p374 ./configure --with-openssl-dir=/usr
这里/usr是OpenSSL默认的安装路径,如果你的系统里OpenSSL在其他目录(比如/usr/local/ssl),替换成对应的路径即可。
3. 调整gcc-4.4的编译参数
Ruby 1.8.7和gcc-4.4的兼容性存在一些小问题,你可以在make的时候加上特定的CFLAGS来规避编译错误:
make CC=gcc-4.4 CFLAGS="-O2 -fno-tree-dce -fno-optimize-sibling-calls"
这个参数是专门解决老版本gcc编译Ruby 1.8时常见的优化导致的错误。
4. 单独编译OpenSSL扩展再整体编译
如果上面的方法还是不行,可以尝试单独编译OpenSSL扩展,确认没问题后再编译整个Ruby:
# 进入OpenSSL扩展目录 cd ruby-1.8.7-p374/ext/openssl # 生成扩展的Makefile ruby extconf.rb --with-openssl-dir=/usr # 单独编译这个扩展 make CC=gcc-4.4 # 回到Ruby根目录继续整体编译 cd ../.. make CC=gcc-4.4
额外提醒
Ruby 1.8.7已经停止安全更新很多年了,如果不是项目强制要求必须用这个版本,强烈建议你升级到Ruby 2.7及以上的维护版本,避免后续遇到更多兼容性和安全问题。
内容的提问来源于stack exchange,提问作者김다희
相关产品推荐
相关产品推荐

