2014/07/31
Processingで作成したアプリをLinuxで実行、、、できない時
介護中にArduino絡みで弄り始めたProcessing(私の場合はWindows環境)。簡単なスケッチでEXEファイルが作れ、それを周囲に自慢したくてZIPに纏めて配った事もありました。が、今日までLinuxで走らせた事は無し。

良く見るのが、「一発でMac、Windows、Linux用の【バイナリ実行ファイル】ができますよ~」みたいな解説サイト。
実行ファイルの作成に関してはExport Applicationの画面を示して「ホレ、ココにチェックすればオケ!」みたいな解説だけで、そこから先の説明に辿り着けない。

昨晩、タッチペンの座標を確かめるスケッチを思いつき、Windows上のProcessingでLinux用の実行ファイルも作りました。

Linux用のフォルダに入っているスケッチ名のファイルってシェルスクリプトじゃん!。
玄人的にはどうでも良い事なのかも知れませんが、ド素人の自分は初めて気付きました。

コレをUSBメモリに書き、Raspberry Piに挿してX上でダブルクリックしても起動しないのです。
つまらない話ですが、USBメモリ上にあるProcessingで作ったLinux用アプリを速攻で開く方法を、夏の夜に嵌ってイライラしたのでメモ。
$ bash /パス/******
windows上のProcessingが作ったLinux用の実行ファイルフォルダ(シェルスクリプトとlibフォルダ)。
名前が長いとミスタイプしてイライラする事もありそうなのでフォルダ名は短縮版にリネーム。
32ビット版と64ビット版、Raspberry Piではどちらでも走りました(今回の簡単アプリ)。

Windows機でそれぞれフォルダごとUSBメモリにコピー。
そのUSBメモリをRaspberry Piに挿す。
Xのファイルマネージャーでマウント確認後、右クリ。プロパティでパーミッションや実行権のラジオボタンを設定。もう一度確認すると元に戻っている。
大抵の場合(もしかすると私だけ)、USBメモリのファイルシステムはFAT32。
なもんでパーミッション設定できず、実行権(+x)を与えられない。←ココに嵌った!。

実行権が与えられていないエクゼキュータブルやシェルスクリプトはWクリックしても、ターミナルから名前を呼び捨てで呼んでもダメ。須藤さんも役立たず。
で、USBメモリにあるProcessingが作った当該スクリプトまでのパスを読んで。
今回→ /media/7406-1223(USBメモリ)/linux32/mouse_test_vga

ターミナルから bashの引数として当該シェルスクリプトをパスネームで呼ぶ。
$bash /media/usbメモリ/Processingで作ったシェルスクリプト
実行権の無いシェルスクリプトでもbashの引数として呼べば実行できるそうです。
(【メリーおばさんのLinux講座】いつも勉強になります。有り難うございます。)

FAT32のUSBメモリ上にあるヘッポコな自作アプリが無事起動。

デスクトップなどにコピーしてから実行権を設定する手もあるけど、問題解決する前にそっちへ逃げていたらファイルシステムとbashの勉強ができませんでした。
動かない?、ソレは仕様でしょう~。そんなコト言うオヤジにはなりたくない。