Hi3559V200平台编译bluez协议栈

因为需要开发蓝牙功能,平台方也没有编译好的bluez工具,所以自己动手花了四五天时间,终于将bluez工具编译了出来,在此做一个编译总结。

平台:Hi3559V200

编译工具链:arm-himix100-linux-gcc

bluez编译本身依赖较多其他库,下图是依赖关系:

 

下图是我编译使用的各个源程序版本号:

编译前需要将bluez以及依赖库的源程序下载好,在同目录下创建_install存放头文件和库文件以及bin文件,以下为具体编译流程。

Expat编译:

Expat源码下载路径:https://sourceforge.net/projects/expat/files/expat/2.0.1/

./configure --prefix=$PWD/../_install --host=arm-himix100-linux CC=arm-himix100-linux-gcc CXX=arm-himix100-linux-g++ --enable-shared --enable-static CFLAGS=-I$PWD/../expat-2.0.1/_install/include LDFLAGS=-L$PWD/../expat-2.0.1/_install/lib --disable-tests
make
make install

Dbus编译:

Dbus源码下载路径:https://dbus.freedesktop.org/releases/dbus/

./configure --prefix=$PWD/../_install --host=arm-himix100-linux CC=arm-himix100-linux-gcc CXX=arm-himix100-linux-g++ --enable-shared --enable-static CFLAGS=-I$PWD/../_install/include LDFLAGS=-L$PWD/../_install/lib --disable-tests
make
make install

编译Dbus时如果遇到报错:

aclocal-1.14: 未找到命令 
automake-1.14: 未找到命令

我的编译环境中的aclocal和automake版本是1.15,所以需要打开Makefile将aclocal-1.14 改为aclocal-1.15,将automake-1.14 改为automake-1.15,可以查看自己系统中的程序版本,在Makefile中修改即可。

Glib编译:

Glib编译流程详解链接:海思平台编译glib库_小楼一夜听春雨-y的博客-CSDN博客

ncurses编译:

ncurses源码下载路径:http://ftp.gnu.org/pub/gnu/ncurses/​​​​​​​

./configure --host=arm-himix100-linux --prefix=$PWD/../_install CC=arm-himix100-linux-gcc CXX=arm-himix100-linux-g++ --disable-stripping --without-manpages --without-tack --without-tests --with-shared
make
make install

如果遇到ncueses编译报错:error: expected ')' before 'int'

将文件curses.tail中104行注释删除即可解决。

readline编译:

readline源码下载路径:http://ftp.gnu.org/gnu/readline/

./configure --host=arm-himix100-linux --prefix=$PWD/../_install CC=arm-himix100-linux-gcc CXX=arm-himix100-linux-g++ LDFLAGS=-L$PWD/../_install/lib bash_cv_wcwidth_broken=yes
make SHLIB_LIBS=-lncurses
make install

libical编译:

libical源码下载路径:https://github.com/libical/libical/tree/1.0

libical中时使用cmake来生成Makefile的,因此需要先将编译工具临时指定为对应的交叉编译工具

export CC=arm-himix100-linux-gcc 
export CXX=arm-himix100-linux-g++
cmake -DCMAKE_INSTALL_PREFIX=$PWD/../_install
make
make install

最最重要的,bluez编译:

bluez源码下载路径:http://www.bluez.org/

bluez会编译出需要的linux蓝牙开发工具,因此再bluez中创建一个_install目录专门用于存放bluez编译生成文件。

./configure --host=arm-himix100-linux --prefix=$PWD/_install PKG_CONFIG_PATH=$PWD/../_install/lib/pkgconfig CPPFLAGS=-I$PWD/../_install/include LDFLAGS=-L$PWD/../_install/lib --disable-systemd --disable-udev --disable-cups --disable-obex --enable-library
make
make install

 编译bluez的时候如果遇到报错:libreadline.so: undefined reference to `tgoto' 等realine库链接找不到定义的,是需要在bluez的Makefile中添加-lncurses,在所有链接readline的库前添加链接ncurses库。添加后即可编译成功。

如上图,是编译成功后生成的bluez工具。 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值