Rob*_*bin 3 c ruby windows nmake ruby-c-extension
我正在尝试构建一个使用libcurl的Ruby C Extensions.到目前为止,我已经在Os X上成功构建了它.但是我在Windows开发方面经验不足,我不确定如何去做.
到目前为止,我可以通过遵循这些说明或多或少地使用Visual Studio命令提示符中的extconf.rb和nmake编译Ruby C Extensions
http://blogs.law.harvard.edu/hoanga/2006/12/14/getting-a-ruby-c-extension-to-compile-on-windows/
但是我的扩展链接libcurl,extconf.rb中有一行来检查这一点
# Make sure the cURL library is installed.
have_library("curl")
Run Code Online (Sandbox Code Playgroud)
在创建makefile时,我明白了
checking for main() in curl.lib... no
creating Makefile
Run Code Online (Sandbox Code Playgroud)
当我运行nmake时,我明白了
fatal error C1083: Cannot open include file: 'curl/curl.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
这是所有预期的,因为它没有安装.我已经下载了curl-7.26.0-devel-mingw64(我认为这适用于Windows 7)
我只是想在Windows环境中弄清楚我应该放置/ bin或/ include以便我的编译器可以找到它们.
在Windows上,您可以使用不同的编译器,Microsoft提供的Visual Studio,MinGW项目的GCC或Intel编译器.
RubyInstaller(我认为是你正在使用的Ruby的版本)使用GCC(这就是为什么它在名称中生成带有mingw的文件)
由于Ruby的工作方式,你不能混合和匹配编译器.如果Ruby是使用GCC构建的,则需要GCC进行编译.
现在推荐的方法是:RubyInstaller + DevKit.DevKit是一个便利包,提供编译Ruby C扩展所需的所有工具.
您可以在RubyInstaller下载页面找到所有这些以及安装说明
一旦安装了Ruby和DevKit,就可以编译大多数不依赖于外部库的扩展.
现在,在您的特定情况下,libcurl,RubyInstaller提供了一些预编译的二进制文件,可以完美地安装基于curl的工具.
libcurl包在RubyInstaller组中与其他包一起宣布.
您将需要下载x86-windows软件包(组页面中的链接),有关如何提取以及放置位置的说明可以在同一链接中找到.请注意,libcurl还需要c-ares,zlib和openssl包.
例如,要在我解压缩包之后安装curb gem:
gem install curb -- --with-curl-dir=C:/Knapsack/x86-windows
Run Code Online (Sandbox Code Playgroud)
C:/Knapsack/x86-windows我在哪里提取了我之前提到的所有二进制包.我还将bin目录添加到了我的PATHlibcurl DLL中,可以找到并使用它.
请注意,虽然Windows用于\指定目录分隔符,但/在向RubyGems提供选项时需要使用.
注意2:在你的帖子中你提到了下载的mingw64,它很可能是64位二进制文件.Ruby是32位可执行文件,所以我推荐的软件包是32位(x86).目前,RubyInstaller不提供64位(x64)二进制文件.
希望这可以帮助.如果您对在Windows上安装和使用Ruby有进一步的疑问,请加入RubyInstaller小组