在Windows环境中使用MSYS2编译Ruby源代码

Ruby源代码在Windows下可以使用Visual C++顺利编译,可惜少gdbm和readline两项native扩展,没有直接在Visual C++中处理的案例,在编写Ruby代码的过程中,一些实验性的语句还是需要在irb工具中执行,少了readline的支持,irb难用到令人怀疑人生,于是仿照RubyInstaller官网的描述,自己进行编译,寻求readline的支持。RubyIntaller站点提供的DevKit不知道葫芦里卖的什么药,还是自己尝试一下比较科学。

这里记一个流水账,以备日后参考。

1、官网下载MSYS2,得到msys2-x86_64-20161025.exe;
2、官网下载Ruby源码包,得到ruby-2.5.1.tar.gz;
3、安装MSYS2,修改安装包仓库镜像为国内的地址,可以选择清华大学开源镜像服务器,在安装的etc\pacman.d目录下编辑对应的文件,加入如下内容:
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64
4、从启动菜单运行msys2,运行pacman-key --init初始化密钥,运行pacman -Syy刷新仓库信息;
5、从启动菜单运行msys2 mingw 64-bit,开始安装编译Ruby源码依赖的工具和库;
必要安装
pacman -S mingw-w64-x86_64-toolchain mingw-w64-x86_64-openssl mingw-w64-x86_64-readline mingw-w64-x86_64-gdbm mingw-w64-x86_64-db mingw-w64-x86_64-zlib make
可选安装
pacman -S msys2-devel mingw-w64-x86_64-doxygen flex bison bisonc++
6、解压Ruby源代码至本地磁盘;
7、cd到Ruby源码路径,之后就像在类Unix下操作一般进行build和install,比如
./configure --prefix=/d/Ruby25-x64 --disable-install-doc --disable-install-static-library && make install
去掉自己不使用的内容和步骤,简单粗暴。

扫描二维码关注公众号,回复: 3055158 查看本文章

问题记录:密钥无效而无法更新程序包,这是因为动态链接库冲突,一些开发工具安装后需要使用readline7,在安装时会自动删除readline6,而密钥管理工具依赖readline6。

解决办法:直接在镜像库中寻找readline6的包,下载至本地解压,将两个动态库拷贝到/usr/bin目录下,经测试可以共存。




猜你喜欢

转载自blog.csdn.net/mscf/article/details/79912773