我想建立一个使用libcurl的一个Ruby的C扩展。 到目前为止,我已经成功建立了它在OS X但是我经历了开发Windows少得多,我不完全知道如何去这样做。
到目前为止,我可以用extconf.rb编译Ruby的C扩展,并从Visual Studio命令提示符执行nmake或多或少按照以下指示
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")
当创建生成文件,我得到
checking for main() in curl.lib... no
creating Makefile
与NMAKE运行时,我得到
fatal error C1083: Cannot open include file: 'curl/curl.h': No such file or directory
这是所有预期的,因为它没有安装。 我已经下载卷曲7.26.0-devel的-mingw64(我认为这是适当的为Windows 7)
我只是不能在Windows环境中找出我的位置应该把要么/ bin或/包括让自己的编译器可以找到它们。
在Windows中可以有不同的编译器,从微软,从MinGW的项目或Intel编译GCC提供的Visual Studio。
RubyInstaller(这我相信是你使用的Ruby版本)使用GCC(这就是为什么它在名称中使用MinGW生成的文件)
由于红宝石的工作方式,你不能混搭编译器。 如果红宝石是建立与GCC,你需要GCC编译。
Nowdays推荐的方法是:RubyInstaller +的devkit。 的devkit是一个方便的包,提供所有编译的Ruby C扩展所需的工具。
你可以找到所有这些加安装说明RubyInstaller下载页面
一旦你安装Ruby和的devkit,你可以编译大多数不依赖于外部库的扩展。
现在,你的具体情况,libcurl中,RubyInstaller已经提供了完美的作品来安装基于卷曲工具的一些预编译的二进制文件。
libcurl的包在那里宣布RubyInstaller组一起包等。
您将需要下载x86的Windows软件包(链接在群组页面),如何提取和在哪里放置它可以在相同的链接中找到的指令。 请注意,的libcurl也需要C-顷,zlib的和OpenSSL包。
例如,安装路缘石宝石 ,之后我提取我只是做了包:
gem install curb -- --with-curl-dir=C:/Knapsack/x86-windows
其中C:/Knapsack/x86-windows
是我提取的所有我之前提到的二进制软件包的目录。 我还添加了bin
目录到我的PATH
这样的libcurl的DLL可以被发现和使用。
请注意,虽然Windows使用\
指定目录分隔符,你需要使用/
提供的选项RubyGems的时候。
注2:在您的文章你提到下载mingw64,其中最有可能是64位二进制文件。 Ruby是一个32位可执行文件,所以我推荐的包是32位(x86)的。 这时RubyInstaller不提供64位(x64)的二进制文件。
希望这可以帮助。 如果您有关于Windows上安装和使用Ruby还有其他疑问,请加入RubyInstaller组