bluez4.99 glib2.29移植到android4.0 移植记录

 

bluez4.99移植到android 4.0, glibc2.29移植到android 4.0源码(android glibc为2.20), 以下内容仅作为我自己开发的记录, 不具有权威性, 如有童鞋

需要,仅供参考。 

 

bluez-3e53b38版本:

gcc编译

查看你的glib库的版本: rpm -qa | grep glib

需要

configure: error: GLib >= 2.28 is required

安装Gib又需要

configure: error: Package requirements (libffi >= 3.0.0) were not met

notes:

       *.tar.gz*.tar.bz2

       tar xvzfXXX.tar.gz

       如果是*.tar.bz2,

       tarxvfjXXX.tar.bz2

       d 解压出来的软件包

       /configure

       make

       make install

       make clean

 

       安装(make installglib ,报:

       configure: error:

       *** 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

       下载gettext-0.18.1.1.tar.gz同样方法安装

 

在安装libffi, gettext, glib后编译可以通过。

安装autoconf ,生成configuration文件

参考: http://blog.csdn.net/sooneboy/article/details/4030966

 

l  android bluez源码编译

文件夹

说明      

合入情况

删除文件

新增文件

Attrib:

 

 

 

att-database.h

gatt-service.c

gatt-service.h

Audio:

mk

合入MK, 修改MK

module-bluetooth-sink.c

Adroid_audio_hw.c

Liba2dp.c/liba2dp.h (移植)

avctp.c/avctp.h

avrcp.c/avrcp.h

Btio

mk

合入MK

 

 

Common:

无更新

N/A

 

 

Compat:

mk

合入MK

 

 

Cups:

无更新

N/A

 

 

Gdbus:

mk

合入MK

 

 

Health:

mk

合入MK

 

 

Input:

mk

合入MK

 

 

Lib:

mk

合入MK

 

 

Network:

mk

合入MK

 

 

Plugins:  

mk

合入MK 需修改

Builtin.h

Echo.c

Adaptername.c

External-dumpmy.c

Wiinote.c

Sap:

内容减少,可不改

N/A

 

Sap-u8500.c

Serial:

无更新

N/A

 

 

Src:

mk

合入MK 需修改

Android_bluez.c(移植)

Attio.h

Sdp-client.c

Sdp-client.h

Test:

mk

合入MK

 

 

Tools:

mk

合入MK 需修改

 

 

deviceInfo

 

 

 

 

emulator

 

 

 

 

mgmt

 

 

 

 

monitor

 

 

 

 

proximity

 

 

 

 

thermometer

 

 

 

 

time

 

 

 

 

unit

 

 

 

 

注:蓝色为新增文件或文件夹,红色为删除的文件或文件夹

文本内容未比较

Glib移植记录:

1.       glib的源码,最主要的是glib这个文件夹。

2.       移植时, ANDROID_STUB必须保留,而且最好,定义的宏可以拿出来,放到Android.mk中,如:

 LOCAL_CFLAGS:= \

        -DANDROID_STUB  \

            -DGLIB_COMPILATION      \

这里的两个是之前在文件中定义的宏

# define ANDROID_STUB

# define GLIB_COMPILATION

3.        G_STATIC_ASSERT (sizeof(gdouble) == sizeof (guint64))  

 size of array 'Compile_Time_Assertion' is negative

              #define G_STATIC_ASSERT(expr) typedef struct

              { char Compile_Time_Assertion[(expr) ? 1 : -1]; } G_PASTE (_GStaticAssert_, __LINE__)

      

    这里是数据长度不一致,在ubuntu下,gdouble, guint64长度都是8arm下,两者长度不一致

 

 

 

4.g_unix_open_pipe   android.mk中添加新增的C文件,注意文件的路径

LOCAL_SRC_FILES:= \

          garray.c         \

          gasyncqueue.c    \

 LOCAL_C_INCLUDES:= \

          $(LOCAL_PATH)/../  \

             $(LOCAL_PATH)       \

              $(LOCAL_PATH)/pcre    \

            $(LOCAL_PATH)/gnulib  \

 

5. glib2.29没有引用  galias.h头文件?galias.h   galiasdef.c

C/C++里面, visibility("hidden")这是什吗意思

visibility用于设置动态链接库中函数的可见性将变量或函数设置为hidden则该符号仅在本so中可见在其他库中则不可见。

 

 


版权声明:本文为huangbz321原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。