環境とか
・Ubuntu 14.04 LTS(64bit)
・PaSoRi(RC-S320)
・ruby 2.1.2p95
ちなみに2014年7月19日です。
入力した内容
libpafe→libpafe-rubyの順番でコンパイルしていきます。
libpafe
$ sudo apt-get install libusb-dev $ mkdir ~/tmp # 適当なディレクトリで $ cd ~/tmp $ wget http://homepage3.nifty.com/slokar/pasori/libpafe-0.0.8.tar.gz $ tar zxvf libpafe-0.0.8.tar.gz $ cd libpafe-0.0.8 $ ./configure $ make $ sudo make install
次にudevの設定をします。
$ cd /lib/udev/rules.dと移動し、以下の内容を「pasori.rules」として保存します。($ sudo vim pasori.rules とかやって)
ACTION!="add", GOTO="pasori_rules_end" SUBSYSTEM=="usb_device", GOTO="pasori_rules_start" SUBSYSTEM!="usb", GOTO="pasori_rules_end" LABEL="pasori_rules_start" ATTRS{idVendor}=="054c", ATTRS{idProduct}=="01bb", MODE="0664", GROUP="plugdev" ATTRS{idVendor}=="054c", ATTRS{idProduct}=="02e1", MODE="0664", GROUP="plugdev" LABEL="pasori_rules_end"それが完了したら、
$ sudo ln -s ../pasori.rules 010_pasori.rules $ sudo udevadm control --reload-rulesとすることで、plugdev グループに属しているユーザであれば pasori を利用できるようになるようです。
libpafe-ruby
$ cd ~/tmp $ wget http://homepage3.nifty.com/slokar/pasori/libpafe-ruby-0.0.8.tar.gz $ tar zxvf libpafe-ruby-0.0.8.tar.gz $ cd libpafe-ruby/ $ ruby extconf.rb $ make $ sudo make install
これでコンパイルは終了。
上記の操作だけでうまくいけばよいのですが、自分はうまくいきませんでした。
試しにirbでrequire 'pasori'したら以下のようなエラーメッセージが
LoadError: libpafe.so.0: wrong ELF class: ELFCLASS32 - /home/user/.rbenv/versions/2.1.2/lib/ruby/site_ruby/2.1.0/x86_64-linux/pasori.so from /home/user/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /home/user/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require' from (irb):3 from /home/user/.rbenv/versions/2.1.2/bin/irb:11:in `<main>'↓
よくわからないので「wrong ELF class: ELFCLASS32」で調べます。
↓
XAMPP for LinuxでXDebugを入れたら”wrong ELF class: ELFCLASS64”と言われる時の対処
Ubuntu 64bit で32bit バイナリのコンパイル
どうやらlibc6-dev-i386パッケージをインストールすれば、何もかもうまくいくらしいです。
あと、CFLAG=-m32というふうに環境変数をセットすると、これまたよいらしいです。
よって
$ sudo apt-get install libc6-dev-i386とした後それぞれ同じ手順をやり直し、コンパイルする部分だけ以下のようにしてみます。
libpafe
$ CFLAGS=-m32 CPPFLAGS=-m32 ./configure $ CFLAGS=-m32 CPPFLAGS=-m32 make $ sudo make install CFLAGS=-m32 CPPFLAGS=-m32libpafe-ruby
$ ruby extconf.rb $ CFLAGS=-m32 make $ sudo make install
結果、、、、、、、
うおおおおおおおおおおおおおおおおおおおおおおおおおおおお!!!!
できたああああああああああああああああああああああああああああ!!!!
✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
初心者なのでこれに2日間ぐらい悩みました…。疲れました…。
使用例
使用例はlibpafe-rubyのsampleディレクトリにあったりしました。
https://github.com/rfujita/libpafe-ruby/tree/master/sample
他にもラズパイでやってる方がいたので、ありがたく参考にさせていただきました。
Raspberry Piで交通系ICカードの残高を表示する
https://gist.github.com/Akkiesoft/6450764
おわりに
libpafeの方がうまくいかなかったらlibpasoriってやつを試そうと思ってました。
Ruby で PaSoRi 使ってみる
libpasori
libpafeはlibpasoriをもとに作られたらしいです。
参考ページ
Linux(Ubuntu)でPasoriを使う (ICOCA残高を読み取る)
libpafe GitHub
libpafe-ruby GitHub
0 件のコメント:
コメントを投稿