bluez 嵌入式编译,海思平台

本文详细介绍了在海思Aarch64平台上编译BlueZ嵌入式蓝牙工具的过程,包括依赖库如zlib、libffi、glib等的编译方法,并提供了因编译错误的解决策略。最后,简要展示了如何在目标设备上使用编译后的Bluez进行基本操作,如查看和开启蓝牙设备。
摘要由CSDN通过智能技术生成

前言

bluez是嵌入式端的蓝牙工具,好像也没有其他的替代品(也可能是我没有找到)。如果有我可能会马上转向其他的工具了。因为bluez依赖的环境太多了,在电脑端编译一次就能通过。但是在嵌入式端各种库缺失,各种因为写法问题造成的编译报错。。。。不过最后还是在一个比较全的文章的参考下,加上各种尝试。完成了初步的编译,然后有一个初步的测试。

参考教程链接: 英文的.

准备工作

包下载地址,都在压缩包里面
https://download.csdn.net/download/eyhxh/13117821
需要下载的包
这些包都是需要的,要特别注意版本,有好几个包不同版本的编译依赖都是不同的,编译时报的错误也不相同。没有一个详细的指导编译难度很大。当然必须说明一点,就是交叉编译的host系统也很重要,所以是很通用的平台,可能完全不会遇到这些错误。所以本文只是一个参考。

编译过程

因为是嵌入式编译,编译中间文件和库我都是放到_install目录中,这个方法其实挺不错的,不会影响到宿主机。

zlib

CC=aarch64-himix200-linux-gcc ./configure --shared --prefix=$(pwd)/../_install; make;
make install

libffi

./configure --host=aarch64-himix200-linux   CC=aarch64-himix200-linux-gcc  --prefix=$(pwd)/../_install
make;make install

glib

./configure --host=aarch64-himix200-linux \
--prefix=$(pwd)/../_install \
PKG_CONFIG_PATH=$(pwd)/../_install/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会错误
用下面的代码包裹保存的报错的这个函数,其实就是把这个错误直接忽略掉!!!
在这里插入图片描述

 //文件位置    ./glib/gdate.c文件中的  g_date_strftime()
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
//包住报错的函数g_date_strftime()
#pragma GCC diagnostic pop

然后make 错误
在这里插入图片描述

这个错误很好解决,上面其实libffi已经编译了,make install默认安装到了lib64文件,最简单的方法就是把lib64里面的库直接复制到lib中

再make ;make install 就成功了

expat

.

/configure --host=arm-linux   CC=aarch64-himix200-linux-gcc  --prefix=$(pwd)/../_install

make;make install

d-bus

./configure --host=arm-linux   \
CC=aarch64-himix200-linux-gcc  \
--prefix=$(pwd)/../_install \
PKG_CONFIG_PATH=$(pwd)/../_install/lib/pkgconfig \
CFLAGS=-I$(pwd)/../_install/include \
LDFLAGS=-L$(pwd)/../_install/lib


make LIBS="-lgmodule -lz -lffi" ;make install  
make LIBS="-lgmodule -lz -lffi -glib" ;make install  
# 某些时候需要这条

#make命令比较特别,shell命令中间有空格要用引号括起来,不然会被当然另一个参数了

ncurses

CPPFLAGS=-P ./configure --host=arm-linux   \
CC=aarch64-himix200-linux-gcc \
CXX=aarch64-himix200-linux-g++  \
--prefix=$(pwd)/../_install \

make
make install

readline

./configure --host=arm-linux   \
CC=aarch64-himix200-linux-gcc \
CXX=aarch64-himix200-linux-g++  \
--prefix=$(pwd)/../_install \
bash_cv_wcwidth_broken=yes \
--with-curses

make
make install

libical

mkdir build
cd build
export CC=aarch64-himix200-linux-gcc
export CXX=aarch64-himix200-linux-g++
cmake .. -DCMAKE_INSTALL_PREFIX=$(pwd)/../_install

make
make install

bluez

./configure --host=arm-linux   \
CC=aarch64-himix200-linux-gcc \
--prefix=$(pwd)/../_install \
PKG_CONFIG_PATH=$(pwd)/../_install/lib/pkgconfig \
CFLAGS=-I$(pwd)/../_install/include \
LDFLAGS=-L$(pwd)/../_install/lib \
--disable-systemd \
--disable-udev \
--disable-cups \
--disable-obex \
--enable-library

make LIBS=-lncurses ;make install

简单使用

copy hciconfig文件到嵌入式的板子上。

/app # ./hciconfig -a  #查看所有蓝牙设备
hci0:   Type: BR/EDR  Bus: USB
        BD Address: A0:9F:10:08:9D:BB  ACL MTU: 1021:8  SCO MTU: 255:12
        DOWN 
        RX bytes:584 acl:0 sco:0 events:30 errors:0
        TX bytes:369 acl:0 sco:0 commands:30 errors:0
        Features: 0xff 0xff 0xff 0xfe 0xdb 0xfd 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH HOLD SNIFF PARK 
        Link mode: SLAVE ACCEPT 
/app # ./hciconfig hci0 up  #打开蓝牙设备
/app # ./hciconfig -a
hci0:   Type: BR/EDR  Bus: USB
        BD Address: A0:9F:10:08:9D:BB  ACL MTU: 1021:8  SCO MTU: 255:12
        UP RUNNING 
        RX bytes:1168 acl:0 sco:0 events:60 errors:0
        TX bytes:738 acl:0 sco:0 commands:60 errors:0
        Features: 0xff 0xff 0xff 0xfe 0xdb 0xfd 0x7b 0x87
        Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 
        Link policy: RSWITCH HOLD SNIFF PARK 
        Link mode: SLAVE ACCEPT 
        Name: 'RTK_BT_4.1'
        Class: 0x000000
        Service Classes: Unspecified
        Device Class: Miscellaneous, 
        HCI Version: 4.1 (0x7)  Revision: 0x828a
        LMP Version: 4.1 (0x7)  Subversion: 0x930d
        Manufacturer: Realtek Semiconductor Corporation (93)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值