xkbd-bthid のコンパイル

Pocket

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

xkbdbthid-0.1_src.tar.gz をダウンロードしてきます

<br />
$ tar -zxf xkbdbthid-0.1_src.tar.gz<br />
$ cd xkbdbthid-0.1<br />
$ make<br />

make を開始すると下のようなエラーメッセージが表示されます。
これ以前にエラーが出た場合は、ライブラリやヘッダーファイルが足りないので一つ一つ追加していきましょう

<br />
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<br />
make[1]: *** [sdp.o] エラー 1<br />
make[1]: ディレクトリ `/home/hatake/Download/xkbdbthid-0.1/xkbd-0.8.15_bthid/src' から出ます<br />

sdb.c の sdb_set_add_access_protos の関数はすでに bluez-libs に取り込まれているので、sdb.c の 118 行目付近をコメントアウトします。

<br />
$ vi xkbd-0.8.15_bthid/src/sdb.c<br />

この修正を行い make をすると下のようなエラーが表示されます。

<br />
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<br />
cc: ../../../bluez-libs-2.23/src/.libs/libbluetooth.a: そのようなファイルやディレクトリはありません<br />
cc: /usr/lib/libXpm.a: そのようなファイルやディレクトリはありません<br />

これは libXpm.a と libbluetooth.a にリンクがあるためです。
ということで、対応が必要なので

<br />
$ cd xkbd-0.8.15_bthid/src<br />
$ ls<br />
Makefile     box.c  button.c  hid.h    hidcd.o  kb.o       libXkbd.o      makefile  sdp.o      xkbd.o<br />
Makefile.am  box.h  button.h  hidcd.c  kb.c     libXkbd.c  libvirtkeys.c  sdp.c     structs.h<br />
Makefile.in  box.o  button.o  hidcd.h  kb.h     libXkbd.h  libvirtkeys.h  sdp.h     xkbd.c<br />

makefile と Makefile があります。
make コマンドでは makefile が優先されますので、makefile の方を書き換えます。

<br />
$ vi makefile<br />

案の定、『../../../bluez-libs-2.23/src/.libs/libbluetooth.a /usr/lib/libXpm.a』という記述がありますので、『-lbluetooth -lXpm』に書き換えます。

そして、もとのディレクトリに戻って、make します。そうすると無事コンパイル完了です。

<br />
$ cd ../../<br />
$ make<br />

コメントを残す