toolbox是Android中专用的busybox,从嵌入式Linux转过来都会大大地吐槽功能简陋。但实质上也有很多特有的很好用的功能。比如getevent命令来调试所有的输入事件。已经静态编译出来了(下载地址:toolbox 静态编译),这里记录一下移植过程。
原本以为会很难,所以一直放很久才开始做,最终很简单,只需要稍加修改Android.mk就可以编译出一个静态链接的toolbox。以下diff文件就是改动信息。
diff --git a/system/core/toolbox/Android.mk b/system/core/toolbox/Android.mk
index 086ba0d..d5aef3b 100755
--- a/system/core/toolbox/Android.mk
+++ b/system/core/toolbox/Android.mk
@@ -91,6 +91,7 @@ LOCAL_SRC_FILES := \
grep/grep.c grep/fastgrep.c grep/file.c grep/queue.c grep/util.c
LOCAL_SHARED_LIBRARIES := libcutils libc libusbhost
+LOCAL_STATIC_LIBRARIES := libc libcutils
LOCAL_C_INCLUDES := bionic/libc/bionic
@@ -102,6 +103,7 @@ LOCAL_C_INCLUDES += external/libselinux/include
endif
+LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_MODULE := toolbox
# Including this will define $(intermediates).12345678910111213141516171819201234567891011121314151617181920
然后进行编译就自动编译成了静态链接的了。
$ file out/target/product/xxx/system/bin/toolbox
out/target/product/xxx/system/bin/toolbox: ELF 32-bit LSB executable, ARM, \
version 1 (SYSV), statically linked, stripped
$12341234
当然,我没有编译所有的CPU架构的,只是编译了ARMv7的,所以比较低的架构或者其它CPU可能不能直接使用,那么就自行编译吧。
<完>
(二)在HHARM2410-R3上的移植 完成了在普通red hat上的安装,熟悉了蓝牙协议栈一些基本的东西,下面的任务就是把协议栈搬到开发板上了。第一步当然是内核了,由于华恒的内核代码改过,我也不知道从bluez上下载的patch能不能使用,试试看了,只好。
# cd /HHARM2410/kernel
# gzip -dc ~/patch-2.4.18-mh15.gz | patch -p1
# find ./ -name '*rej'
./fs/cramfs/inode.c.rej
不好,有文件不能patch,看看是针对cramfs文件系统的patch,我也不清楚为什么bluez的patch会修改到cramfs,不过我想 问题应该不大。内核源代码关于bluetooth的部分华恒应该没有改过,因此patch的主要部分应该是没有问题的。如果内核编译后发生问题,我想大概 也只有把内核代码翻出来看了。
先就这样了,用用试试看好了。与普通pc上的类似,只不过有些是m的现在统统为y了。我的配置关于Bluez的部分设置为:
#
# Bluetooth support
#
CONFIG_BLUEZ=y
CONFIG_BLUEZ_L2CAP=y
# CONFIG_BLUEZ_SCO is not set
CONFIG_BLUEZ_RFCOMM=y
CONFIG_BLUEZ_RFCOMM_TTY=y
CONFIG_BLUEZ_BNEP=y
CONFIG_BLUEZ_BNEP_MC_FILTER=y
CONFIG_BLUEZ_BNEP_PROTO_FILTER=y
# CONFIG_BLUEZ_HIDP is not set
#
# Bluetooth device drivers
#
CONFIG_BLUEZ_HCIUSB=y
# CONFIG_BLUEZ_HCIUSB_SCO is not set
# CONFIG_BLUEZ_HCIUART is not set
# CONFIG_BLUEZ_HCIBFUSB is not set
# CONFIG_BLUEZ_HCIDTL1 is not set
# CONFIG_BLUEZ_HCIBT3C is not set
# CONFIG_BLUEZ_HCIBLUECARD is not set
# CONFIG_BLUEZ_HCIBTUART is not set
# CONFIG_BLUEZ_HCIVHCI is not set
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)