如何创建 Android make 文件以将基于 glibc 的根文件系统合并到 AOSP 文件系统中?

问题描述 投票:0回答:1
2013 年 Karim Yaghmour 书《嵌入式 Android》的附录 A(传统用户空间)描述了如何将包含 BusyBox 的基于 glibc 的根文件系统合并到 AOSP 构建中。但它描述了如何在 2.3/Gingerbread 中实现此功能。

我正在尝试使用 Orange Pi 4 LTS

对提供的

Android 8.1 源 执行相同操作。 按照书中的说明,我将基于 glibc 的根文件系统的交叉编译版本(包含 BusyBox)复制到我的 AOSP 中的新目录:

$ ls -lh ~/builds/RK3399-Android8.1/rootfs-glibc total 20K -rw-rw-r-- 1 joe joe 584 Mar 18 12:14 Android.mk drwxrwxr-x 2 joe joe 4.0K Mar 8 12:25 bin drwxrwxr-x 2 joe joe 4.0K Mar 8 11:29 lib lrwxrwxrwx 1 joe joe 11 Mar 8 12:25 linuxrc -> bin/busybox drwxrwxr-x 2 joe joe 4.0K Mar 8 12:25 sbin drwxrwxr-x 5 joe joe 4.0K Mar 8 11:30 usr

我创建了一个与书中的文件相匹配的
Android.mk
文件。但它不起作用,所以我尝试并修改为:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := rootfs-glibc
# LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)
LOCAL_MODULE_CLASS := EXECUTABLES

# This part is a hack, we're doing "addprefix" because if we don't,
# this dependency will be stripped out by the build system
GLIBC_ROOTFS := $(addprefix $(TARGET_ROOT_OUT)/, rootfs-glibc)

$(GLIBC_ROOTFS):
    xxxmkdir -p $(TARGET_ROOT_OUT)
    cp -af $(TOPDIR)rootfs-glibc/* $(TARGET_ROOT_OUT)
    rm $(TARGET_ROOT_OUT)/Android.mk
    # The last command just gets rid of this very .mk since it's copied as is

include $(BUILD_PREBUILT)

我知道 makefile 正在被解析,因为在添加
LOCAL_MODULE_CLASS
之前我收到了错误消息。但是我的

$(GLIBC_ROOTFS)

 目标中的规则没有运行——我故意将 
mkdir
 更改为 
xxxmkdir
 证实了这一点。
我做了一些更多的研究,了解到了 
Soong Build System

的存在,它“在 Android 7.0 (Nougat) 中引入以取代 Make”。但我搜索了示例

Android.bp 文件来执行一些与我尝试执行的操作类似的操作,但没有成功。

看来我需要使用 
android_filesystem

的模块类型,但我还没有找到示例或足够清晰的文档来创建我自己的。

我应该修复我的 Android.mk

文件吗?如何?或者我应该使用

Android.bp

 文件?

我联系了卡里姆·亚格穆尔(Karim Yaghmour),他很友善地回答了我的问题。他向我推荐了他的嵌入式 Android 培训课件中的练习。前往
makefile android-source glibc android-soong
1个回答
0
投票
并向下滚动。单击课件。 (注意许可证。)有一个练习权的链接。第 14 页是下载对我有用的 Android.mk 文件的说明(按照随附的说明进行操作后)。

© www.soinside.com 2019 - 2024. All rights reserved.