我正在尝试从Windows的源代码构建Ruby,并且似乎没有非常好的文档来说明我如何能够获得本地构建的OpenSSL以连接到我的ruby构建。有没有什么方法我应该在DLL / EXE /中复制什么才能用最新的OpenSSL版本(如1.0.1r或其他东西)构建一个Ruby版本?
答案 0 :(得分:1)
所以是的,这既是一个简单而又难的问题。
首先,我假设您正在使用RubyInstaller project而不是使用MSVC进行编译。如果您正在使用MSVC,那么其中一些可能会有用,但总体而言不是。
仅供参考,这是actually configures which version to use。
的代码下一条有价值的信息,RubyInstaller用于构建Ruby的环境基于rubenvb的mingw64 builds(Version 4.7.2 in this case)和樱桃挑选的MSYS工具。编译器很重要,因为已知使用非同一编译器构建的库会发生问题。 我实际上并不了解该领域。
RubyInstaller尝试通过提供使用OpenKnapsack Project的DevKit构建的二进制文件来避免此问题。 openssl库是从那里下载的,用于RubyInstaller构建。如果你想要一个二进制文件,那么你可以将工作配方上传到the knapsack-recipes
repo,它将以32位和64位的形式构建并上传。 我是手动完成的。 -sad face -
因此,简单部分是您可以获取所需的任何二进制文件,只需将DLL放入Ruby bin
文件夹即可链接并使用该DLL。但Ruby编译的版本是一个硬编码常量,即使你有一个新版本的DLL也不会改变。
硬部分是,如果knapsack-recipes
repo中没有您想要的版本的配方,您必须制作一个并提交拉取请求或查找/构建版本你自己。然后,如果你真的想在Ruby中使用硬编码的正确版本,你必须更改config in the rubyinstaller project,然后使用如下命令自己构建Ruby:
> rake ruby21 DKVER=mingw64-32-4.7.2 #32-bit
> rake ruby21 DKVER=mingw64-64-4.7.2 #64-bit