Problem

前回はBluetoothを使ってみました。

ただ、これはCUIで操作していたので、使い勝手が悪いです。
せっかくなので、プログラムから使えるようにしてみたいです。

Resolution

単純に、bluez をyumからインストールしても、ライブラリやヘッダーがインストールされないようなので、自分でビルドする必要があるようです。

1
2
3
4
5
6
7
$ wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.44.tar.gz
$ tar xfz bluez-5.44.tar.gz
$ rm bluez-5.44.tar.gz
$ cd bluez-5.44
$ ./configure --disable-systemd --enable-library
checking for GLIB... no
configure: error: GLib >= 2.28 is required

というエラーがでるのでシステムにインストールされているglibを調べてみました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ yum info glib
利用可能なパッケージ
名前 : glib
アーキテクチャー : x86_64
エポック : 1
バージョン : 1.2.10
リリース : 41.el7
容量 : 137 k
リポジトリー : epel/x86_64
要約 : A library of handy utility functions
URL : http://www.gtk.org/
ライセンス : LGPLv2+
説明 : GLib is a handy library of utility functions. This C library is
: designed to solve some portability problems and provide other useful
: functionality that most programs require.

相当古い。
しかし、ここでyum install glibしても、どうもリポジトリに含まれているglibが古いようで無意味でした。
が、実は落とし穴で、正しくは

1
$ sudo yum install glib2-devel

になります。
再度試してみます。

1
2
3
$ ./configure --disable-systemd --enable-library
checking for DBUS... no
configure: error: D-Bus >= 1.6 is required

次はD-Busです。これも単純に、yum install dbusではだめで、

1
$ sudo yum install dbus-devel

になります。
次は、

1
2
3
$ ./configure --disable-systemd --enable-library
checking for UDEV... no
configure: error: libudev >= 172 is required

とでますので、

1
$ sudo yum install libudev-devel

になります。
次は、

1
2
3
$ ./configure --disable-systemd --enable-library
checking for ICAL... no
configure: error: libical is required

とでますので、

1
$ sudo yum install libical-devel

になります。
次は、

1
2
3
4
5
$ ./configure --disable-systemd --enable-library
checking readline/readline.h usability... no
checking readline/readline.h presence... no
checking for readline/readline.h... no
configure: error: readline header files are required

とでますので、

1
$ sudo yum install readline-devel

になります。
最終的にこれで依存関係が解決するはずで、

1
2
3
$ ./configure --disable-systemd --enable-library
$ make
$ sudo make install

が成功するはずです。
インストール後、

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ ls -la /usr/local/include/bluetooth/
合計 164
drwxr-xr-x. 2 root root 4096 8月 10 23:44 .
drwxr-xr-x. 5 root root 56 8月 10 23:44 ..
-rw-r--r--. 1 root root 9415 8月 10 23:44 bluetooth.h
-rw-r--r--. 1 root root 3938 8月 10 23:44 bnep.h
-rw-r--r--. 1 root root 1600 8月 10 23:44 cmtp.h
-rw-r--r--. 1 root root 63804 8月 10 23:44 hci.h
-rw-r--r--. 1 root root 10494 8月 10 23:44 hci_lib.h
-rw-r--r--. 1 root root 2087 8月 10 23:44 hidp.h
-rw-r--r--. 1 root root 6648 8月 10 23:44 l2cap.h
-rw-r--r--. 1 root root 2309 8月 10 23:44 rfcomm.h
-rw-r--r--. 1 root root 1541 8月 10 23:44 sco.h
-rw-r--r--. 1 root root 18197 8月 10 23:44 sdp.h
-rw-r--r--. 1 root root 21725 8月 10 23:44 sdp_lib.h
$ ls -la /usr/local/lib/libbluetooth*
-rwxr-xr-x. 1 root root 961 8月 10 23:44 /usr/local/lib/libbluetooth.la
lrwxrwxrwx. 1 root root 23 8月 10 23:44 /usr/local/lib/libbluetooth.so -> libbluetooth.so.3.18.15
lrwxrwxrwx. 1 root root 23 8月 10 23:44 /usr/local/lib/libbluetooth.so.3 -> libbluetooth.so.3.18.15
-rwxr-xr-x. 1 root root 397416 8月 10 23:44 /usr/local/lib/libbluetooth.so.3.18.15

ライブラリやヘッダーファイルがインストールされていることが確認できます。