gpt4 book ai didi

c - 如何在 Windows 上编译 Ruby C 扩展和链接 libcurl

转载 作者:可可西里 更新时间:2023-11-01 14:42:03 25 4
gpt4 key购买 nike

我正在尝试构建一个使用 libcurl 的 Ruby C 扩展。到目前为止,我已经在 Os X 上成功地构建了它。但是我在 Windows 中的开发经验要少得多,并且不确定如何去做。

到目前为止,我可以或多或少地按照这些说明从 Visual Studio 命令提示符使用 extconf.rb 和 nmake 编译 Ruby C 扩展

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")

创建makefile时,我得到

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

这是预料之中的,因为它没有安装。我已经下载了 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 downloads page 找到所有这些以及安装说明。

安装 Ruby 和 DevKit 后,您可以编译大多数不依赖于外部库的扩展。

现在,在您的特定情况下,libcurl、RubyInstaller 提供了一些预编译的二进制文件,可以完美地安装基于 curl 的工具。

RubyInstaller group 公布的 libcurl 包与其他包一起。

您将需要下载 x86-windows 包(组页面中的链接),有关如何提取和放置它的说明可以在同一链接中找到。请注意,libcurl 还需要 c-ares、zlib 和 openssl 包。

例如,安装curb gem ,在我解压我刚才做的包之后:

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 group

关于c - 如何在 Windows 上编译 Ruby C 扩展和链接 libcurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11480430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com