環境とか
・Ubuntu 14.04 LTS(64bit)
・PaSoRi(RC-S320)
・ruby 2.1.2p95
ちなみに2014年7月19日です。
入力した内容
libpafe→libpafe-rubyの順番でコンパイルしていきます。
libpafe
1 2 3 4 5 6 7 8 9 10 11 | $ 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の設定をします。
1 | $ cd /lib/udev/rules .d |
1 2 3 4 5 6 7 8 9 | 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" |
1 2 | $ sudo ln -s .. /pasori .rules 010_pasori.rules $ sudo udevadm control --reload-rules |
libpafe-ruby
1 2 3 4 5 6 7 | $ 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'したら以下のようなエラーメッセージが
1 2 3 4 5 6 7 | 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というふうに環境変数をセットすると、これまたよいらしいです。
よって
1 | $ sudo apt-get install libc6-dev-i386 |
libpafe
1 2 3 | $ CFLAGS=-m32 CPPFLAGS=-m32 . /configure $ CFLAGS=-m32 CPPFLAGS=-m32 make $ sudo make install CFLAGS=-m32 CPPFLAGS=-m32 |
1 2 3 | $ 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 件のコメント:
コメントを投稿