コンパイルbluez-5.25 Linux環境で実行


今回コンパイルされたのはbluezの5バージョン以上で、以前のバージョンではBluetooth 4.0はサポートされておらず、5バージョン以上では4.0がサポートされていなかった.私のLinuxホストはUbuntu 14です.04バージョン
今回のコンパイルリファレンスhttp://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BlueZ_Bluetooth_tools_for_ARMhttp://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BlueZ_Bluetooth_tools_for_ARM
その上でいくつかの小さな修正をして、いくつかの間違いを避けました.記録ステップを開始して、比較的に煩雑で、O(∩∩)O.ここでも原文についていくつか説明します.
zlib-1.2.8
zlibのコンパイルには--hostを指定する必要はありませんが、後で構成が完了したらMakefileファイルを変更してクロスコンパイルする必要があります.
ソース:wgethttp://zlib.net/zlib-1.2.8.tar.gz
構成:./configure --prefix=/wsh_space/my_install/bluez5
Makefileの変更:
CC=arm-cortex_a9-linux-gnueabi-gcc LDSHARED=arm-cortex_a9-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map CPP=arm-cortex_a9-linux-gnueabi-gcc -E AR=arm-cortex_a9-linux-gnueabi-ar RANLIB=arm-cortex_a9-linux-gnueabi-ranlib
コンパイル:
make
make install
libffi-3.0.13
ソース:wgetftp://sourceware.org/pub/libffi/libffi-3.0.13.tar.gz
構成:./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/wsh_space/my_install/bluez5
コンパイル:
make
make install
glib-2.40.0
コンパイルglibはzlibに依存し、libffi and glibc>=2.18であり、シンクホストはUbuntu 14である.04,glibcのバージョンは2.19で、ここでは満足しています.またglib-genmarshalが欠けている可能性があります.私はコンパイル時に欠けています.これは解決します.コマンドを実行します.
sudo apt-get install libglib2.0-dev
    。        :

ソース:wgethttp://ftp.gnome.org/pub/gnome/sources/glib/2.40/glib-2.40.0.tar.xz
構成:./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/wsh_space/my_install/bluez5 PKG_CONFIG_PATH=/wsh_space/my_install/bluez5/lib/pkgconfig  glib_cv_stack_grows=no glib_cv_uscore=yes ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes
コンパイル:
make
make install
D-Bus
D-Bus daemonではexpat XML parserライブラリが必要になるので、ここではまずexpatライブラリをコンパイルする必要があります.インストールしないと次のエラーが発生します.
checking for XML_ParserCreate_MM in -lexpat... no
configure: error: Explicitly requested expat but expat not found

手順は次のとおりです.
expat-2.1.0
ソース:wgethttp://sourceforge.net/projects/expat/files/expat/2.1.0/expat-2.1.0.tar.gz
構成:./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/wsh_space/my_install/bluez5
コンパイル:
make
make install
D-Bus1.9.4
原文の構成を使用する場合、コンパイルは次のようにエラーを報告します.
corrupt.c:29:18: fatal error: glib.h:そのファイルやディレクトリはありません/wsh_space/my_install/bluez5/include/glib-2.0/glib.h:30:26: fatal error: glib/galloca.h:そのファイルやディレクトリfatal error:glibconfig.h:そのファイルやディレクトリはありません
確認するとtestディレクトリの下のファイルが参照されています.hファイルパスが正しくなく、パスを1つずつ変更できますが、かなり煩雑です.
私の方法は、testをブロックし、--disable-testsオプションを追加することです.
ソース:wgethttp://dbus.freedesktop.org/releases/dbus/dbus-1.9.4.tar.gz
構成:./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/wsh_space/my_install/bluez5 --disable-tests
コンパイル:
make
make install
libical-1.0
bluezのコンパイルにはlibicalのサポートが必要です.libicalのコンパイルにはcmakeとg++が必要です.そのため、システムにはこの2つのツールが必要です.次の2つのコマンドを実行してインストールすることができます.ネットワークをスムーズに保つ必要があります.
sudo apt-get install cmake sudo apt-get install g++-arm-linux-gnueabi
そしてコンパイルインストールができます
ソース:wgethttp://downloads.sourceforge.net/freeassociation/libical-1.0.tar.gz
構成:export CC=arm-cortex_a9-linux-gnueabi-gcc export CXX=arm-linux-gnueabi-g++ cmake -DCMAKE_INSTALL_PREFIX=/wsh_space/my_install/bluez5
ここでのコマンドは、コマンドラインで直接実行されます.
コンパイル:
make
make install
Readline
コンパイルreadlineはncursesのサポートが必要で、ncursesがない場合、コンパイル時に次のエラーが報告されます.
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `PC'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `tgetflag'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `tgetent'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `UP'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `tputs'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `tgoto'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `tgetnum'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `BC'
/usr/arm-linux-gnueabi/lib/libreadline.so: undefined reference to `tgetstr'
ncursesを参照する方法は、make時にSHLIB_を追加することです.LIBS=-lncursesオプション
ncurses-5.9
ソース:wgethttp://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
構成:./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/wsh_space/my_install/bluez5 CXX="arm-linux-gnueabi-g++"
コンパイル:
make
make install
Readline6.3
構成時にbash_を追加する必要がありますcv_wcwidth_broken=yesオプションで、次のエラーを回避します.
checking for wcwidth broken with unicode combining characters... 
configure: error: in `/.../readline-6.3':
configure: error: cannot run test program while cross compiling

ソース:wgetftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz
構成:./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/wsh_space/my_install/bluez5 bash_cv_wcwidth_broken=yes
コンパイル:
make SHLIB_LIBS=-lncurses
make install
Building BlueZ
bluezには、hciattach、hciconfig、hcitool and rfcommなど、Bluetoothに必要な基本ツールが含まれています.
BlueZ 5.25は少なくともGLib>=2.28、D-Bus>=1.6 and libudev>=143が必要で、linudevはかなり面倒なものなので、bluezをコンパイルするときに、それを遮蔽すればよい.
ソース:wgethttp://www.kernel.org/pub/linux/bluetooth/bluez-5.25.tar.xz
構成:./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/wsh_space/my_install/bluez5 PKG_CONFIG_PATH=/wsh_space/my_install/bluez5/lib/pkgconfig CC="arm-cortex_a9-linux-gnueabi-gcc -L/wsh_space/my_install/bluez5/lib -I/wsh_space/my_install/bluez5/include"--disable-systemd --disable-udev --disable-cups --disable-obex --enable-library
コンパイル:
make 
make install DEstdIR=/wsh_space/my_install/bluez 5ここのインストールでは、次の図に示すように、特殊なファイルが生成されます.
编译bluez-5.25 通过 Linux环境下运行_第1张图片
dbus-daemonを使用する場合は、このファイルが必要です.このファイルの構造は次の図のようになります.
编译bluez-5.25 通过 Linux环境下运行_第2张图片
また、インストールディレクトリのvarフォルダをwsh_にコピーする必要があります.space/my_install/bluez 5ディレクトリの下に、次の図があります.
開発ボードで使用する場合はwsh_spaceフォルダはシステムのルートディレクトリにコピーされます.
ライブラリファイルも必要です.私は直接インストールディレクトリ全体を開発ボードの/usr/local/bluetoothの下にコピーします.
これで、完了し、他のテストは原文を参考にすることができます.