MacでlibusbJava - libusb 0.1と1.0

Ken published on
3 min, 556 words

Categories: Tips

前回、MacでlibusbJavaを使うことを書いた。

■ MacでlibusbJavaを使う | Ken's evitation http://blog.teapla.net/?p=1153

JNIは解決し、実行は出来たものの、実行するとなぜかUSB Busを見つけてくれない。libusbJavaからUSB Busを見つけられるようにしてあげる必要がありそうだ。

libusbが怪しい

JNIでlibusbは呼び出せているということは、libusbが怪しそうだ。 実際、libusbは1.0と0.1の2つが存在する。

■ libusb http://www.libusb.org/

libusbJavaは1.0をサポートしていないということで、Macにはlibusb 0.1を入れていた。それでうまく動かないということは、1.0を使った方がいいということなのかもしれない。 ただ、libusbJavaがサポートしていないと言っている以上、そのままでは使えない。そこで、usblib-compatというライブラリに注目した。 compat(ible)というだけあって、0.1も1.0もうまくやってくれるだろうという期待を込めて!

sudo port uninstall libusb-legacy
sudo port install libusb
sudo port install libusb-compat

余計かもしれないlibusb 1.0(legacy)を削除し、必要そうなlibusb 1.0をインストール。

JNILIBからの参照先

このままではJNILIBから参照するライブラリが無いと言われるので、シンボリックリンクを張る。
cd /usr/local/lib
sudo ln -s /opt/local/lib/libusb.dylib ./libusbpp-0.1.4.dylib
sudo ln -s /opt/local/lib/libusbpp.dylib ./libusb-0.1.4.dylib
libusb 1.0にはlibusbppというライブラリが存在しないので、libusbとlibusbppを同じファイルにシンボリックリンク。 なんとなく、libusbppがlibusbに取り込まれたんじゃないかなぁ〜という推測を元に。

結果

USB Busを認識するようになった!

JNILIB作成時にlibusbppが無いと言われていたが、もしかしたら、これでJNILIBも作れるようになったのかもしれない。と思って試してみたが、JNILIBの作成は失敗した。 また必要になったときにでも改めてやってみよう。