xkbd-bthid のコンパイル

Pocket

一発で上手くいかなかったのでメモ

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

コメントを残す