一発で上手くいかなかったのでメモ
xkbdbthid-0.1_src.tar.gz をダウンロードしてきます
$ tar -zxf xkbdbthid-0.1_src.tar.gz $ cd xkbdbthid-0.1 $ make
make を開始すると下のようなエラーメッセージが表示されます。
これ以前にエラーが出た場合は、ライブラリやヘッダーファイルが足りないので一つ一つ追加していきましょう
sdp.c:118: error: static declaration of ‘sdp_set_add_access_protos’ follows non-static declaration /usr/include/bluetooth/sdp_lib.h:238: error: previous declaration of ‘sdp_set_add_access_protos’ was here make[1]: *** [sdp.o] エラー 1 make[1]: ディレクトリ `/home/hatake/Download/xkbdbthid-0.1/xkbd-0.8.15_bthid/src' から出ます
sdb.c の sdb_set_add_access_protos の関数はすでに bluez-libs に取り込まれているので、sdb.c の 118 行目付近をコメントアウトします。
$ vi xkbd-0.8.15_bthid/src/sdb.c
この修正を行い make をすると下のようなエラーが表示されます。
cc -DUSE_XPM -DUSE_XFT xkbd.o libXkbd.o button.o box.o kb.o hidcd.o sdp.o -o xkbdbthid -L/usr/X11R6/lib /usr/lib/libXft.so /usr/lib/libfreetype.so -lz /usr/lib/libXrender.so -lX11 -lfontconfig ../../../bluez-libs-2.23/src/.libs/libbluetooth.a /usr/lib/libXpm.a cc: ../../../bluez-libs-2.23/src/.libs/libbluetooth.a: そのようなファイルやディレクトリはありません cc: /usr/lib/libXpm.a: そのようなファイルやディレクトリはありません
これは libXpm.a と libbluetooth.a にリンクがあるためです。
ということで、対応が必要なので
$ cd xkbd-0.8.15_bthid/src $ ls Makefile box.c button.c hid.h hidcd.o kb.o libXkbd.o makefile sdp.o xkbd.o Makefile.am box.h button.h hidcd.c kb.c libXkbd.c libvirtkeys.c sdp.c structs.h Makefile.in box.o button.o hidcd.h kb.h libXkbd.h libvirtkeys.h sdp.h xkbd.c
makefile と Makefile があります。
make コマンドでは makefile が優先されますので、makefile の方を書き換えます。
$ vi makefile
案の定、『../../../bluez-libs-2.23/src/.libs/libbluetooth.a /usr/lib/libXpm.a』という記述がありますので、『-lbluetooth -lXpm』に書き換えます。
そして、もとのディレクトリに戻って、make します。そうすると無事コンパイル完了です。
$ cd ../../ $ make