bluez4.99移植到android 4.0, glibc2.29移植到android 4.0源码(android glibc为2.20), 以下内容仅作为我自己开发的记录, 不具有权威性, 如有童鞋
需要,仅供参考。
bluez-3e53b38版本:
l 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 xvzfXXX.tar.gz
如果是*.tar.bz2,则
tarxvfjXXX.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
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长度都是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中可见,在其他库中则不可见。