Bluez的编译过程与方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 解决办法: • bluez-4.48\network\Makefile中去掉`-fvisibility=hidden'
编译过程遇到问题及解决办法
• • • • • • • • • • • • • • • 编译bluez-4.48 CC main.lo CC manager.lo CC server.lo CC bridge.lo CC connection.lo CC common.lo CCLD network.la Making all in serial CC main.lo cc1: error: unrecognized option `-fvisibility=hidden' make[2]: *** [main.lo] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 [hdl@vsserver1 bluez-4.48]$
Bluez的编译过程与方法
2011-05-19 制作人:胡道磊
蓝牙模块解决方案
• linux下针对蓝牙设备的操作分两部分,分 别是驱动程序的部分和用户程序的部分, 而用户程序部分又可分为守护进程部分和 用户编程部分。 • 蓝牙设备基于通用蓝牙芯片,驱动程序在 内核里已经集成,即大多数蓝牙设备的驱 动程序会在内核源代码中找到,因此,不 需要针对蓝牙设备编写具体的驱动程序。
编译方案选择与说明
• 三、bluez-4.x + libxml方案 • libxml2-2.6.31.tar.gz dbus-1.0.2.tar.gz glib-2.22.3.tar.bz2 bluez-4.48.tar.gz
编译方案选择与说明
• 四、bluez-4.x + expat方案 • expat-2.0.1.tar.gz dbus-1.0.3.tar.gz glib-2.22.0.tar.bz2 bluez-4.48.tar.gz
库之间的依赖关系
• • • • • dbus依赖 expat bluez依赖 glib、dbus 说明: 1、如果glib库的版本比较高,可能还需要zlib 2、这里bluez-4.48,相当于以前低版本的 bluez-lib、bluez-utils • 3、dbus依赖expat或者libxml,这里用expat
所用的库及下载网站
• • • • • • • • expat-2.0.1.tar.gz http://downloads.sourceforge.net/expat dbus-1.0.3.tar.gz http://dbus.freedesktop.org/releases/dbus/ glib-2.22.0.tar.bz2 ftp://ftp.gtk.org/pub/glib bluez-4.48.tar.gz http://www.kernel.org/pub/linux/bluetooth/
编译前的目录位置说明
• • • • Fra Baidu bibliotek、指定安装位置 /home/hdl/autobuild/hdl/Bluetooth/lib 2、Linux-2.6.28内核之include /home/hdl/autobuild/hdl/test/kernel/Linux2.6.28/include
编译过程与方法
• 1、编译安装expat-2.0.1.tar.gz • tar -zxvf expat-2.0.1.tar.gz • ./configure -prefix=/home/hdl/autobuild/hdl/Bluetooth/li b --host=arm-linux --target=arm-linux CC=arm-linux-gcc • make • make install
• 解决办法: • bluez-4.48\plugins\Makefile中去掉`-fvisibility=hidden'
编译过程遇到问题及解决办法
• • • • • • • • • • 编译bluez-4.48 CC echo.lo CCLD echo.la Making all in network CC main.lo cc1: error: unrecognized option `-fvisibility=hidden' make[2]: *** [main.lo] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 [hdl@vsserver1 bluez-4.48]$
编译过程与方法
• 2、编译安装dbus-1.0.3.tar.gz • tar –zxvf dbus-1.0.3.tar.gz • echo ac_cv_have_abstract_sockets=yes>armlinux.cache • ./configure --prefix=/home/hdl/autobuild/hdl/Bluetooth/lib --host=arm-linux --target=arm-linux CC="arm-linux-gcc I/home/hdl/autobuild/hdl/Bluetooth/lib/include L/home/hdl/autobuild/hdl/Bluetooth/lib/lib" --cachefile=arm-linux.cache --with-x=no --with-xml=expat • make • make install
编译过程遇到问题及解决办法
• 编译bluez-4.48 • 提示找不到Dbus库,说明指明pkgconfig • export PKG_CONFIG_LIBDIR=/home/hdl/autobui ld/hdl/Bluetooth/lib/lib/pkgconfig
编译过程遇到问题及解决办法
• • • • • • • • • 编译bluez-4.48 CCLD test_textfile Making all in plugins CC echo.lo cc1: error: unrecognized option `-fvisibility=hidden' make[2]: *** [echo.lo] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 [hdl@vsserver1 bluez-4.48]$
编译方案选择与说明
• • • • • • 二、 bluez-lib+bluez-utils+libxml方案 bluez-lib-3.36.tar.gz libxml2-2.7.4.tar.gz dbus-1.0.2.tar.gz glib-2.16.5.tar.bz2 bluez-utils-3.36.tar.gz
Bluez介绍
• bluez新的版本不像旧的那样有什么bluezutil、bluez-lib什么的,就一个bluez4.48。
编译方案选择与说明
• • • • • • 一、 bluez-lib+bluez-utils+expat方案 bluez-lib-3.36.tar.gz expat-2.0.1.tar.gz dbus-1.2.16.tar.gz glib-2.22.4.tar.bz2 bluez-utils-3.36.tar.gz
编译过程与方法
• • • • • • • • 3、编译安装glib-2.22.0.tar.gz tar –zxvf glib-2.22.0.tar.gz echo ac_cv_type_long_long=yes>arm-linux.cache echo glib_cv_stack_grows=no>>arm-linux.cache echo glib_cv_uscore=no>>arm-linux.cache echo c_cv_func_posix_getpwuid_r=yes>>arm-linux.cache echo ac_cv_func_posix_getgrgid_r=yes>>arm-linux.cache ./configure --prefix=/home/hdl/autobuild/hdl/Bluetooth/lib --host=armlinux --target=arm-linux CC="arm-linux-gcc I/home/hdl/autobuild/hdl/Bluetooth/lib/include L/home/hdl/autobuild/hdl/Bluetooth/lib/lib" --cache-file=armlinux.cache • make • make install
编译前说明及注意事项
• 1、四种方案均可,所选库根据编译器及库 之间的兼容性而定,库版本并不唯一 • 2、所选各库版本尽量偏低,避免带来意想 不到的错误,导致无法编译通过 • 3、dbus库可依赖expat或libxml,默认是 expat,建议用expat • 4、glib库版本过高,可能会用到zlib库 • 5、bluez-4.x以上版本,编译时需要用到 linux内核中的/include/linux/sockios.h
Bluez介绍
• Linux OS开放的bluetooth 协议栈主要包括IBM公司的 BlueDrekar, Nokia公司的Affix, Axis公司的OpenBT和官方 的协议栈BlueZ. Bluetooth协议栈BlueZ分为两部分:内核代码和用户态程 序及工具集。 其中内核代码由BlueZ核心协议和驱动程序组成; Bluetooth协议实现在内核源代码 /net/bluetooth中。包括 hci,l2cap,hid,rfcomm,sco,SDP,BNEP等协议的实现。驱 动程序放在 /driver/bluetooth中,包含Linux kernel对各种接 口的Bluetooth device的驱动。例如:USB接口,串口等。 用户态程序及工具集包括应用程序接口和BlueZ工具集。 BlueZ提供函数库以及应用程序接口,便于程序员开发 bluetooth应用程序。BlueZ utils是主要工具集,实现对 bluetooth设备的初始化和控制。
蓝牙模块解决方案
• 大致需要完成如下: • 1、linux内核的配置,完成蓝牙设备驱动的配 置 • 2、编译bluez协议栈 • 3、编写用户进程通信程序
蓝牙设备间配对原理
• 两个蓝牙设备A和B,A先发送要求配对的 请求给B,B由用户设置好配对的密码即 PIN code,然后回一个消息给A,说你想配 对可以呀,知道我的密码吗?然后A就发送 PIN code过去,B看和自己的密码相符合, 就发送一个replyOK的消息给A,这样两者 就建立起来了信任关系
编译过程与方法
• 4、编译安装bluez-4.48.tar.gz • export PKG_CONFIG_LIBDIR=/home/hdl/autobuild/hdl/Bluetoot h/lib/lib/pkgconfig • tar –zxvf bluez-4.48.tar.gz • ./configure --prefix=/home/hdl/autobuild/hdl/Bluetooth/lib --host=arm-linux --target=arm-linux CC=arm-linux-gcc CC="arm-linux-gcc I/home/hdl/autobuild/hdl/Bluetooth/lib/include I/home/hdl/autobuild/hdl/test/kernel/linux-2.6.28/include L/home/hdl/autobuild/hdl/Bluetooth/lib/lib" --disable-audio --enable-test • make • make install