3

libcurlを使用するRubyC拡張機能を構築しようとしています。これまでのところ、Os Xで正常に構築できました。ただし、Windowsでの開発経験ははるかに少なく、これを行う方法が正確にはわかりません。

これまでのところ、これらの手順に従うことで、VisualStudioコマンドプロンプトからextconf.rbとnmakeを使用してRubyC拡張機能をコンパイルできます。

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を配置する必要がある場所がわかりません。

4

1 に答える 1

10

Windowsでは、Microsoftが提供するVisual Studio、MinGWプロジェクトのGCC、またはIntelコンパイラなどのさまざまなコンパイラを使用できます。

RubyInstaller(使用しているRubyのバージョンだと思います)はGCCを使用します(そのため、名前にmingwが含まれるファイルが生成されます)

Rubyの動作方法により、コンパイラーを組み合わせて使用​​することはできません。RubyがGCCでビルドされた場合、コンパイルするにはGCCが必要です。

現在、推奨されるアプローチは、RubyInstaller+DevKitです。DevKitは、RubyC拡張機能のコンパイルに必要なすべてのツールを提供する便利なパッケージです。

これらすべてに加えて、インストール手順はRubyInstallerダウンロードページにあります。

RubyとDevKitをインストールすると、外部ライブラリに依存しないほとんどの拡張機能をコンパイルできます。

さて、あなたの特定のケース、libcurl、RubyInstallerは、curlベースのツールをインストールするために完全に機能するいくつかのコンパイル済みバイナリを提供しました。

他のパッケージと一緒にRubyInstallerグループで発表された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、libcurlDLLを見つけて使用できるようにしました。

Windowsはディレクトリセパレータを指定するために使用しますが、RubyGemsにオプションを提供するとき\に使用する必要があることに注意してください。/

注2:あなたの投稿では、ダウンロードされたmingw64について言及しています。これは、64ビットバイナリである可能性が最も高いです。Rubyは32ビットの実行可能ファイルなので、私が推奨するパッケージは32ビット(x86)です。現時点では、RubyInstallerは64ビット(x64)バイナリを提供していません。

お役に立てれば。WindowsでのRubyのインストールと使用についてさらに質問がある場合は、RubyInstallerグループに参加してください。

于 2012-07-14T13:54:05.700 に答える