Windowsの(Cygwinの)PerlでDevice::USBをインストールしたときのメモ

記憶で書いてるし、WindowsPerl使うの初めてなのでスマートな方法じゃないかもですけどメモっておきます。

  • Cygwinをてきとうにインストール
  • LibUsb-Win32 のFilter Driverをインストール
    • libusb-win32-filter-bin-0.1.12.1.exe
    • C:\Program Files\LibUSB-Win32\include\usb.h をCygwin的な/usr/include/usb.hにcp。
    • C:\Program Files\LibUSB-Win32\lib\gcc\libusb.aをCygwin的な/usr/lib/libusb.aにcp。ファイル名をlibusb.aにするのを忘れないように。
  • CPANから、Ingy döt Net / Inline - search.cpan.org をインストール
    • Device::USBを入れるのに必要なの
  • vi /usr/bin/perlld
    • ↓な感じに変更する。
$ diff -u /usr/bin/perlld{.orig,}
--- /usr/bin/perlld.orig        2008-03-06 18:33:09.458910000 +0900
+++ /usr/bin/perlld     2008-03-06 18:18:25.783013200 +0900
@@ -5,7 +5,7 @@

 # these are pretty mandatory
 my $CC = 'gcc';
-my $EXPORT_ALL = 1;
+my $EXPORT_ALL = 0;

 # if some of extensions are undefined,
 # no corresponding output will be done.
    • これをやらないと、Device::USBのmake中に、「Cannot export \177libusb0_NULL_THUNK_DATA: symbol not found」と怒られて進めない。
    • nm /usr/lib/libusb.aするとシンボルはあるみたいなんだけど。\177 = 0x7F = ^? = DELがとてもあやしい。
  • で、やっと、Device::USBのインストール。
    • ここまでお膳立てしてれば府ツーに入るはず。

USBデバイスにcontrol_msg送るだけの簡単なものですが、Linux+libusb+Device::USBで動いたスクリプトがそのまま、Windows XP SP2+libusb-win32+Device::USBで動きました。うひひ。