bluez移植

1. ubuntu系统 

ubuntu系统无需移植,直接安装就好了。使用如下命令安装

sudo  apt-get install libbluetooth-dev  

Ubuntu系统直接用这个命令安装就好了

2. ARM系统 

ARM系统移植比较复杂,需要移植很多库,具体如下

2.1 移植zlib

步骤

说明

wget wget https://zlib.net/current/zlib.tar.gz

tar -xzf zlib.tar.gz

cd zlib/

./configure --prefix=/usr/ddd/temp/bluez/arm-bluez

CC=arm-linux-gnueabihf-gcc

LDSHARED=arm-linux-gnueabihf-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

在Makefile 中修改

make

make install

2.2 移植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=/usr/ddd/temp/bluez/arm-bluez

make

make install

2.3 移植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=/usr/ddd/temp/bluez/arm-bluez  CFLAGS="-fPIC"

make -j8

sudo make install

2.4 移植glib

​​​​

步骤

说明

wget https://download.gnome.org/sources/glib/2.40/glib-2.40.2.tar.xz

tar -xjvf glib-2.40.0.tar.xz

cd glib-2.40.0/

./configure --host=arm-linux-gnueabihf --prefix=/usr/ddd/temp/bluez/arm-bluez  PKG_CONFIG_PATH=/usr/ddd/temp/bluez/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

 很难下载,可以直接从网页下载

​​​​​​​2.5 移植expat

步骤

说明

https://sourceforge.net/projects/expat/files/expat/2.4.0/expat-2.4.0.tar.xz/download  

tar -xvf expat-2.3.0.tar.xz

cd expat-2.3.0/

./configure --host=arm-linux-gnueabihf --prefix=/usr/ddd/temp/bluez/arm-bluez  

make

make install

直接下载

​​​​​​​2.6 移植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=/usr/ddd/temp/bluez/arm-bluez/ CFLAGS=-I/usr/ddd/temp/bluez/arm-bluez/include CPPFLAGS=-I/usr/ddd/temp/bluez/arm-bluez/include LDFLAGS=-L/usr/ddd/temp/bluez/arm-bluez/lib GLIB_CFLAGS="-I/usr/ddd/temp/bluez/arm-bluez/include/glib-2.0 -pthread -I/usr/ddd/temp/bluez/arm-bluez/lib/glib-2.0/include/"

make

make install  

​​​​​​​2.7 移植libical

步骤

说明

git clone https://github.com/libical/libical.git

tar -xzf libical-1.0.tar.gz

cd libical-1.0/

export CC=arm-linux-gnueabihf-gcc  

export CXX=arm-linux-gnueabihf-g++

ll /usr/ddd/temp/bluez//arm-bluez

cmake -DCMAKE_INSTALL_PREFIX=/usr/ddd/temp/bluez/arm-bluez

make

make install

​​​​​​​2.8 移植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 /usr/bin/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip  /usr/bin/strip  //很重要

 ./configure --host=arm-linux-gnueabihf --prefix=/usr/ddd/temp/bluez/arm-bluez  CXX="arm-linux-gnueabihf-g++" CC="arm-linux-gnueabihf-gcc"  --with-shared

make

make install

​​​​​​​2.9 移植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=/usr/ddd/temp/bluez/arm-bluez bash_cv_wcwidth_broken=yes LDFLAGS=-L/usr/ddd/temp/bluez/arm-bluez/lib  

make SHLIB_LIBS=-lncurses

make install

注意 -L后无空格

​​​​​​​2.10 移植bluez

步骤

说明

wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.33.tar.gz  

tar -xJf bluez-5.33.tar.gz

cd bluez-5.33

./configure --host=arm-linux-gnueabihf --prefix=/usr/ddd/temp/bluez/arm-bluez PKG_CONFIG_PATH=/usr/ddd/temp/bluez/arm-bluez/lib/pkgconfig --disable-systemd --disable-udev --disable-cups --disable-obex --enable-library LDFLAGS="-L/usr/ddd/temp/bluez/arm-bluez/lib -lncurses" CFLAGS=-I/usr/ddd/temp/bluez/arm-bluez/include CPPFLAGS=-I/usr/ddd/temp/bluez/arm-bluez/include CFLAGS=-I/usr/ddd/temp/bluez/arm-bluez/include

make

make install

5.18的版本在应用编译使时头文件会出错,无法使用

说明: 编译完成后,

头文件在arm-bluez\include目录中

库文件在arm-bluez\lib目录中,其中一些用不到的可以删除掉

可执行文件在arm-bluez\bin和arm-bluez\libexec目录中

2.11 ​​​​​​​移植过程中遇到的问题

现象

解决方法

Working zlib library and headers not found错误

是ubuntu系统中zlib版本太低,更新一下即可

sudo apt-get install zlib1g-dev

You must have either have gettext support in your C library, or use the

*** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html  错误

是ubuntu系统中gettext版本太低,更新一下即可

sudo apt-update

sudo apt-get install gettext

error: Could not find a glib-genmarshal in your PATH

是ubuntu系统中glib版本太低,更新一下即可

sudo apt-get install libglib2.0-dev

strip: Unable to recognise the format

of the input file `/usr/ddd/temp/bluez/arm-bluez/bin/tic'  

默认使用了ubuntu系统中的strip,需要对strip做软连接,如下

ln -s /usr/bin/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip  /usr/bin/strip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值