[Armadillo:04356] [Armadillo-240]bluez-utilsのmakeができません。

TOMOYUKI KAWAHARA email@hidden
2009年 6月 17日 (水) 14:52:24 JST


いつもお世話になっております。kwhrです。

類似のQ&Aがあがっているのに申し訳ありません。
Armadillo-240へbluez-utilsをインストールしようとしているのですが、
どうしてもbluez-utilsのmakeで失敗してしまいます。
お力添えをよろしくお願いいたします。

環境
 linux-2.6.12.3-a9-17
 atmark-dist-20090318


以下のような作業を行いました。

1.menuconfigの変更
	$ cd atmark-dist-20090318
	$ make menuconfig

	Main Menu
	 └Kernel/Library/Defaults Selection
	   ├Linux Kernel Configuration(Customize Kernel Settings)
	   │ └Device Drivers
	   │   ├Networking support
	   │   │  └<*> Bluetooth subsystem support
	   │   │    ├<*> L2CAP protocol support
	   │   │    ├<*> SCO links support
	   │   │    ├<*> RFCOMM protocol support
	   │   │    │  └[*] RFCOMM TTY support
	   │   │    ├<*> BNEP protocol support
	   │   │    │  ├[*] Multicast filter support
	   │   │    │  └[*] Protocol filter support
	   │   │    ├<*> HIDP protocol support
	   │   │    └Bluetooth device drivers
	   │   │       ├<*> HCI USB driver
	   │   │       │  └[*] SCO (voice) support
	   │   │       ├<*> HCI UART driver
	   │   │       │  ├[*] UART (H4) protocol support
	   │   │       │  └[*] BCSP protocol support
	   │   │       │    └[*] Transmit CRC with every BCSP packet
	   │   │       ├<*> HCI BCM203x USB driver
	   │   │       ├<*> HCI BPA10x USB driver
	   │   │       ├<*> HCI BlueFRITZ! USB driver
	   │   │       └<*> HCI VHCI (Virtual HCI device) driver
	   │   ├Graphics support
	   │   │ └< > Support for frame buffer devices
	   │   └USB support
	   │     └USB Network Adapters
	   │        └<*> USB ZD1211 based Wireless device support
	   └Userland Configurations(Customize Vendor/User Settings)
	      └Network Applications
	        ├[*] wireless_tools support
	        ├[*] iwconfig
	        ├[*] iwgetid
	        ├[*] iwlist
	        ├[*] iwpriv
	        └[*] iwspy

	$ make

2.事前準備1(equivs)
 equivs:ダミーパッケージを作成し、ローカルでコンパイルしたパッケージの依存関係を解決する。
	$ su
	Password:****
	# apt-get install equivs
	# exit

3.事前準備2(pkg-config)
 pkg-config:アプリケーションやライブラリのコンパイル時に与えるオプションを表示する。
	$ su
	Password:****
	# apt-get install pkg-config
	# exit

4.事前準備3(pkg-configダミーパッケージの作成)
 pkg-configは、パッケージと一緒にインストールされる.pcファイルを参照して必要なオプションの出力を行うが、
 これを利用して、ARM用クロスパッケージの.pcファイルが置かれる、/usr/arm-linux/lib/pkgconfigをPKG_CONFIG_PATH
 環境変数に指定すれば、クロス環境向けにもpkg-configが使えるようになり、わざわざクロス用をインストールする必要が
 なくなる。そこでダミーのクロス用pkg-configパッケージをインストールして、依存関係の解決を行う。

 mkXdummyを入手、ファイルアクセス権を変更し、入手したmkXdummyに対して、pkg-configを実行する。
	$ wget http://download.atmark-techno.com/misc/softwaredesign/chapter5/mkXdummy
	$ chmod 755 mkXdummy
	$ ./mkXdummy pkg-config
	$ su
	Password:****
	# dpkg -i pkg-config-arm-cross_0.21-1_all.deb
	# exit

5.bluezライブラリのインストール(開発機用)
	$ su
	Password:****
	# apt-get install libbluetooth2
	# apt-get install libbluetooth2-dev
	# exit

	$ ./mkXdummy libbluetooth2
	$ ./mkXdummy libbluetooth2-dev

	$ su
	Password:****
	# dpkg -i libbluetooth2-arm-cross_3.7-1_all.deb
	# dpkg -i libbluetooth2-dev-arm-cross_3.7-1_all.deb
	# exit

6.bluezダウンロードからビルド(Armadillo用)
	$ mkdir bluez
	$ cd bluez
	$ apt-get -d source bluez-libs
	$ apt-get -d source bluez-utils

	$ dpkg-source -x bluez-libs_3.7-1.dsc
	$ dpkg-source -x bluez-utils_3.7-1.dsc

	$ cd bluez-libs-3.7
	$ ./configure --host=i686-pc-linux-gnu --target=arm-linux-gnu
--prefix=/usr --enable-shared=no --enable-static=yes CC=arm-linux-gcc
--build=arm-linux-gnu
	$ make
	$ make install DESTDIR=$PWD/install/

	$ cd ../
	$ cd bluez-utils-3.7
	(続けて ./configureを実行したいところだが、「D-Bus library is required」と表示され、Makefileが作れない。)

	$ su
	Password:****
	# apt-get build-dep bluez-utils
	# exit
	(以上を行ってから、./configureを実行する)

	$ ./configure --host=i686-pc-linux-gnu --target=arm-linux-gnu
CC=arm-linux-gcc --build=arm-linux-gnu
--with-bluez=$PWD/../bluez-libs-3.7/install LDFLAGS=-Wl,-elf2flt
	$ make

<make実行結果>
make  all-recursive
make[1]: ディレクトリ `/home/atmark/bluez/bluez-utils-3.7' に入ります
Making all in common
make[2]: ディレクトリ `/home/atmark/bluez/bluez-utils-3.7/common' に入ります
if arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I..     -Wall -O2
-D_FORTIFY_SOURCE=2 -MT oui.o -MD -MP -MF ".deps/oui.Tpo" -c -o oui.o
oui.c; \
        then mv -f ".deps/oui.Tpo" ".deps/oui.Po"; else rm -f
".deps/oui.Tpo"; exit 1; fi
if arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I..     -Wall -O2
-D_FORTIFY_SOURCE=2 -MT list.o -MD -MP -MF ".deps/list.Tpo" -c -o
list.o list.c; \
        then mv -f ".deps/list.Tpo" ".deps/list.Po"; else rm -f
".deps/list.Tpo"; exit 1; fi
if arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I..     -Wall -O2
-D_FORTIFY_SOURCE=2 -MT textfile.o -MD -MP -MF ".deps/textfile.Tpo" -c
-o textfile.o textfile.c; \
        then mv -f ".deps/textfile.Tpo" ".deps/textfile.Po"; else rm
-f ".deps/textfile.Tpo"; exit 1; fi
if arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I..     -Wall -O2
-D_FORTIFY_SOURCE=2 -MT helper.o -MD -MP -MF ".deps/helper.Tpo" -c -o
helper.o helper.c; \
        then mv -f ".deps/helper.Tpo" ".deps/helper.Po"; else rm -f
".deps/helper.Tpo"; exit 1; fi
if arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I..     -Wall -O2
-D_FORTIFY_SOURCE=2 -MT glib-ectomy.o -MD -MP -MF
".deps/glib-ectomy.Tpo" -c -o glib-ectomy.o glib-ectomy.c; \
        then mv -f ".deps/glib-ectomy.Tpo" ".deps/glib-ectomy.Po";
else rm -f ".deps/glib-ectomy.Tpo"; exit 1; fi
rm -f libhelper.a
ar cru libhelper.a oui.o list.o textfile.o helper.o glib-ectomy.o
ranlib libhelper.a
if arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I..     -Wall -O2
-D_FORTIFY_SOURCE=2 -MT test_textfile.o -MD -MP -MF
".deps/test_textfile.Tpo" -c -o test_textfile.o test_textfile.c; \
        then mv -f ".deps/test_textfile.Tpo" ".deps/test_textfile.Po";
else rm -f ".deps/test_textfile.Tpo"; exit 1; fi
/bin/sh ../libtool --tag=CC --mode=link arm-linux-gcc  -Wall -O2
-D_FORTIFY_SOURCE=2  -Wl,-elf2flt -o test_textfile  test_textfile.o
libhelper.a
mkdir .libs
arm-linux-gcc -Wall -O2 -D_FORTIFY_SOURCE=2 -Wl,-elf2flt -o
test_textfile test_textfile.o  libhelper.a
/usr/lib/gcc/arm-linux-gnu/4.1.2/../../../../arm-linux-gnu/bin/ld:
warning: cannot find entry symbol lf2flt; defaulting to 00008ac4
make[2]: ディレクトリ `/home/atmark/bluez/bluez-utils-3.7/common' から出ます
Making all in daemon
make[2]: ディレクトリ `/home/atmark/bluez/bluez-utils-3.7/daemon' に入ります
if arm-linux-gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../common
-I/usr/local/include   -I/usr/include/dbus-1.0
-I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include   -Wall -O2 -D_FORTIFY_SOURCE=2 -MT main.o
-MD -MP -MF ".deps/main.Tpo" -c -o main.o main.c; \
        then mv -f ".deps/main.Tpo" ".deps/main.Po"; else rm -f
".deps/main.Tpo"; exit 1; fi
/bin/sh ../libtool --tag=CC --mode=link arm-linux-gcc
-I/usr/local/include   -I/usr/include/dbus-1.0
-I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include   -Wall -O2 -D_FORTIFY_SOURCE=2
-Wl,-elf2flt -o bluetoothd  main.o -ldbus-glib-1 -ldbus-1 -lglib-2.0
-L/usr/local/lib -lbluetooth   ../common/libhelper.a
mkdir .libs
arm-linux-gcc -I/usr/local/include -I/usr/include/dbus-1.0
-I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include -Wall -O2 -D_FORTIFY_SOURCE=2 -Wl,-elf2flt
-o bluetoothd main.o  -ldbus-glib-1 -ldbus-1
/usr/arm-linux-gnu/lib/libglib-2.0.so -lrt -L/usr/local/lib
/usr/local/lib/libbluetooth.so ../common/libhelper.a -Wl,--rpath
-Wl,/usr/arm-linux-gnu/lib -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath
-Wl,/usr/arm-linux-gnu/lib -Wl,--rpath -Wl,/usr/local/lib
/usr/lib/gcc/arm-linux-gnu/4.1.2/../../../../arm-linux-gnu/bin/ld:
skipping incompatible
/usr/arm-linux-gnu/bin/../../lib/libdbus-glib-1.so when searching for
-ldbus-glib-1
/usr/lib/gcc/arm-linux-gnu/4.1.2/../../../../arm-linux-gnu/bin/ld:
skipping incompatible
/usr/arm-linux-gnu/bin/../../lib/libdbus-glib-1.a when searching for
-ldbus-glib-1
/usr/lib/gcc/arm-linux-gnu/4.1.2/../../../../arm-linux-gnu/bin/ld:
cannot find -ldbus-glib-1
collect2: ld returned 1 exit status
make[2]: *** [bluetoothd] エラー 1
make[2]: ディレクトリ `/home/atmark/bluez/bluez-utils-3.7/daemon' から出ます
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/home/atmark/bluez/bluez-utils-3.7' から出ます
make: *** [all] エラー 2
<make実行結果ここまで>

 どうも、Makefileで指差すディレクトリに間違いがあるようです。
 Makefileを直接修正するしかないのかなぁ、と思うのですが、どこを修正すれば直るのか分かりません。
 過去ログ(http://lists.atmark-techno.com/pipermail/armadillo/2007-December/002530.html)(http://lists.atmark-techno.com/pipermail/armadillo/2007-December/002542.html)も参考にさせていただきましたが、
  ・Makefile の-I/usr/include の後ろに -I/usr/arm-linux/includeを追加する。
    →試したものの効果なし
  ・sdptool.c内372〜377行目をコメント化する。
    →おそらくバージョンが異なるため、「372〜377行目」がどこを指すのか不明
 でした。
 どうか、力をお貸し願います。


 ちなみに、makeが成功したら、
	$ make install DESTDIR=$PWD/install
	$ su
	Password: ****
	# cp -R -p /home/atmark/bluez-utils-3.7/install/etc
/home/atmark/atmark-dist-20090318/romfs/
	# cp -R -p /home/atmark/bluez-utils-3.7/install/usr
/home/atmark/atmark-dist-20090318/romfs/
	# exit
	$ cd /home/atmark/atmark-dist-20090318
	$ make image
	$ hermit download -i images/linux.bin.gz -r kernel -port /dev/ttyUSB0
	$ hermit download -i images/romfs.img.gz -r userland -port /dev/ttyUSB0
 を実行すると、bluez-utilsのArmadillo-240へのインストールは完了、と思っているのですが、以上で手順に抜けはありませんでしょうか?

よろしくお願いいたします。



armadillo メーリングリストの案内