如何移植 linux 到安卓手机

如何移植 linux 到安卓手机,第1张

移植toolbox到普通Linux系统中

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7302225.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存