手軽なファイル交換に使えないかというのが今回の目標なので、OBEX(Object Exchange)によるファイル交換を試してみる。
OBEXというのは、赤外線通信などで使われるファイル交換の手順のようだが、これはBluetoothでも使えるようになっているそうだ。
実装としては、OpenOBEXというのがあって、
こちらでSL-Zaurus用のパッケージも公開されているのだが、
これはどうやら赤外線で使うようmakeされているようにみえる(そもそも赤外線通信活用のため、作成されたようだし)。
今回はBluetoothで使えなければ意味がないので、ソースを入手してBluetoothを使えるように自分でコンパイルする。
コンパイルはdev_img-1.3を使い、SDカード上にソースを展開してセルフコンパイルすることにする。
とりあえず、OpenOBEXのホームページからソースファイルを取得する。
http://openobex.sourceforge.net/download.html
ここから、openobex-1.0.0.tar.gzをダウンロードする。
これを展開して、そのままconfigureを実行すると、
# ./configure
checking host system type... arm-unknown-linux-gnu
checking target system type... arm-unknown-linux-gnu
:
:
checking for IrDA support... yes
checking for Bluetooth support... no
:
:
となってしまい、Bluetooth用のMakefileが作成されない。
これは、Bluetooth用のインクルードファイルがないため。上記のBlueZのパッケージでは
当然そこまでインストールはしてくれないので、自分でBlueZのソースをダウンロードして
includeファイルのみを取り出しておく(bluez-libs-2.4.tar.gzにincludeファイルが含まれている)。
といっても、dev_img-1.3はcramfsのため、dev_img-1.3のinclude内には入れることが出来ない。
gccでincludeファイルが読めるようにしておけばconfigure, makeは通るようなので、
とりあえず適当なディレクトリにコピーして、そこをgccで認識するように環境変数で
指定してやることにする。
# cd /mnt/work
# gzip -cd openobex-1.0.0.tar.gz | tar xf -
# gzip -cd bluez-libs-2.4.tar.gz | tar xf -
# cd openobex-1.0.0
# mkdir src/bluetooth
# cp ../bluez-libs-2.4/include/* src/bluetooth/
# export CPPFLAGS=-I/mnt/work/openobex-1.0.0/src/
# ./configure
# make
インストールは素直にmake installするとincludeファイル等もインストールしようとするため、
個別にインストール指定した。
make install-binSCRIPTSでは、openobex-configというスクリプトがインストールされる。
これは後述するopenobex-appsが必要としているようなのでインストールした。
make install-libLTLIBRARIESで、/usr/local/libにOpenOBEXのライブラリファイルがインストールされる。
# make install-binSCRIPTS
# cd src
# make install-libLTLIBRARIES
しかし、前述したページにある
ipkgでインストールされるファイルと比べてみると
openobex_1.0.0-1_arm.ipk:
root root 24 Jun 29 23:53 libopenobex-1.0.so.0
root root 28888 Jun 29 23:50 libopenobex-1.0.so.0.0.0
root root 40972 Jun 29 23:49 libopenobex.a
root root 738 Jun 29 23:51 libopenobex.lai
root root 24 Jun 29 23:54 libopenobex.so
今回コンパイルしたもの:
root root 24 Sep 11 01:27 libopenobex-1.0.so.0
root root 30060 Sep 11 01:27 libopenobex-1.0.so.0.0.0
root root 43012 Sep 11 01:27 libopenobex.a
root root 738 Sep 11 01:27 libopenobex.la
root root 24 Sep 11 01:27 libopenobex.so
という違いが出ている。
なぜかはよくわからないが(というか.la, laiの違いさえわからない....)、
とりあえず気にせず先に進むことにする。