2009年8月23日日曜日

ruby-usbのコンパイルが出来た


画像のようなエラーが出ていたため、libusb 用のライブラリがコンパイルできないと思っていたのだが、意外と簡単に解決した。


以下に手順を書くことにする。

  • はじめに
まずは、VisualC++が動くように /bin/vcvars32.bat を実行して環境変数を設定する。

  • ソース入手
ruby-usb - libusb binding for Ruby のサイトから ruby-usb-0.2.tar.gz をダウンロードする。


それから、libusb-win32も入手しておく。

これらのソースファイルを適当な作業用ディレクトリに展開する。

libsub-win32は、usb.hとlibusb.libは面倒だからruby-usbと同じフォルダーにコピーして配置した。

  • Makefile作成
READMEに書いてあるとおり、

ruby extconf.rb

を実行する。するとMakefileが出来上がる。

このMakefileをエディターで開いて、

LIBS = $(LIBRUBYARG_SHARED) oldnames.lib user32.lib advapi32.lib shell32.lib ws2_32.lib libusb.lib

のように、行の最後にlibusb.libをつける。これで先ほどのエラーが出なくなる。要するにエラーの原因はライブラリが読み込めてなかったということだった。

  • コンパイル&インストール
READMEの続きを実行する。ただし、VCなのでmakeじゃなく、nmakeとなる。

> nmake
> nmake install

最後に、usb.h と libusb.lib を rubyのインストールされているディレクトリ配下のinclude/ruby-1.9.1とlibにそれぞれ手で配置した。

irbを起動して、require 'usb'すると-->trueと返事が返ってきた。

これがつかえるとなると、DLなどを使ったコードを書かなくても済むに違いない。


0 件のコメント:

コメントを投稿