(十二)深入理解蓝牙BLE之“移植Bluez 5.18源码到嵌入式平台”

26 篇文章 87 订阅 ¥49.90 ¥99.00

在某嵌入式平台进行蓝牙开发,发现上面居然没有btmon,hciattach,hcitool等蓝牙调试工具,无奈之下,只好移植bluez协议栈到目标嵌入式平台,建议移植5.18版本(最新的5.54版本居然hcitool等工具不是默认编译的,需要修改Makefile才可以)。

看到很多讲解移植过程的文章都是需要积分的,觉得写一篇免积分的文章还是有些意义的,欢迎同行来交流。

移植环境:

Linux ubuntu

目标平台:

sigmastar 星宸科技

配置交叉编译工具链:

export PATH=$PATH:/home/XXX/Workspace/gcc-sigmastar-XXXXXXXX-x86_64_arm-linux-gnueabihf/bin

编译zlib:

$ wget wget https://zlib.net/current/zlib.tar.gz
$ tar -xzf zlib.tar.gz
$ cd zlib/
$ ./configure --prefix=/home/XXX/arm-bluez/

修改生成的Makefile

CC=arm-linux-gnueabi-gcc
LDSHARED=arm-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=arm-linux-gnueabi-gcc -E
AR=arm-linux-gnueabi-ar
RANLIB=arm-linux-gnueabi-ranlib
$ make
$ make install

编译libffi:

$ wget ftp://sourceware.org/pub/libffi/libffi-3.0.13.tar.gz
$ tar -xzf libffi-3.0.13.tar.gz
$ cd libffi-3.0.13/
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez/
$ make
$ make install

编译gettext:

$ wget http://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.tar.xz
$ tar -xvf gettext-0.22.tar.xz
$ cd gettext-0.22
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez/ CFLAGS="-fPIC"
$ make -j8
$ sudo make install

编译glib:

$ wget http://ftp.gnome.org/pub/gnome/sources/glib/2.40/glib-2.40.0.tar.xz
$ tar -xJf glib-2.40.0.tar.xz
$ cd glib-2.40.0/
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez/ PKG_CONFIG_PATH=/home/XXX/arm-bluez/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

编译expat:

$ wget https://jaist.dl.sourceforge.net/project/expat/expat/2.3.0/expat-2.3.0.tar.xz
$ tar -xf expat-2.3.0.tar.xz
$ cd expat-2.3.0/
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez/
$ make
$ make install

编译dbus:

$ wget http://dbus.freedesktop.org/releases/dbus/dbus-1.8.0.tar.gz
$ tar -xf dbus-1.8.0.tar.gz
$ cd dbus-1.8.0/
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez/ CFLAGS=-I/home/XXX/arm-bluez/include CPPFLAGS=-I/home/XXX/arm-bluez/include LDFLAGS=-L/home/XXX/arm-bluez/lib GLIB_CFLAGS="-I/home/XXX/arm-bluez/include/glib-2.0 -pthread -I/home/XXX/arm-bluez/lib/glib-2.0/include/"
$ make (test模块编译不通过的话,在makefile中注释掉它,反正我们不需要)
$ make install  

编译libical:

$ wget http://downloads.sourceforge.net/freeassociation/libical-1.0.tar.gz
$ tar -xzf libical-1.0.tar.gz
$ cd libical-1.0/
$ export CC=arm-linux-gnueabihf-gcc
$ arm-linux-gnueabihf-gcc
$ export CXX=arm-linux-gnueabihf-g++
$ arm-linux-gnueabihf-g++
$ ll /home/XXX/arm-bluez
$ cmake -DCMAKE_INSTALL_PREFIX=/home/XXX/arm-bluez
$ make
$ make install

编译ncurses:

$ wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.2.tar.gz
$ tar -xzf ncurses-6.2.tar.gz
$ cd ncurses-6.2/
$ ln -s /home/XXX/Workspace/gcc-sigmastar-XXXXXXXX-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip /usr/bin/strip
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez CXX="arm-linux-gnueabihf-g++" CC="arm-linux-gnueabihf-gcc" --with-shared
$ make
$ make install

编译readline:

$ wget ftp://ftp.cwru.edu/pub/bash/readline-6.3.tar.gz
$ tar -xzf readline-6.3.tar.gz
$ cd readline-6.3/
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez bash_cv_wcwidth_broken=yes LDFLAGS=-L/home/XXX/arm-bluez/lib
$ make SHLIB_LIBS=-lncurses
$ make install

编译bluez:

$ wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.18.tar.xz
$ tar -xJf bluez-5.18.tar.xz
$ cd bluez-5.18
$ ./configure --host=arm-linux-gnueabihf --prefix=/home/XXX/arm-bluez PKG_CONFIG_PATH=/home/XXX/arm-bluez/lib/pkgconfig --disable-systemd --disable-udev --disable-cups --disable-obex --enable-library LDFLAGS="-L/home/XXX/arm-bluez/lib -lncurses" CFLAGS=-I/home/XXX/arm-bluez/include CPPFLAGS=-I/home/XXX/arm-bluez/include CFLAGS=-I/home/XXX/arm-bluez/include
$ make
$ make install

参考:

https://wiki.beyondlogic.org/index.php?title=Cross_Compiling_BlueZ_Bluetooth_tools_for_ARM

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GuoFeng.Wan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值