您的位置:首页 > 产品设计 > UI/UE

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

2012-11-29 09:29 344 查看
 

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

安装GLib又需要

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

notes:

        *.tar.gz和*.tar.bz2
        tar
xvzf XXX.tar.gz
        如果是*.tar.bz2,则
        tar xvfj
XXX.tar.bz2
        d
解压出来的软件包
        /configure
        make
        make install
        make clean
 
        安装(make install)glib ,
报:
        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

 


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长度都是8, arm下,两者长度不一致

 

 

 

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中可见,在其他库中则不可见。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: