我已经为 arm 编译了 glibc,它与 Android glibc 或仿生 C 不同,因为我编译的 glibc 环境将有助于提供更多的 api。现在我可以在 Android 运行时复制 /system/ 文件夹中的 glibc 环境,并且在执行 chroot 时我可以在 glibc 环境中运行我的程序。
目前我正在分别编译 glibc 和 Android,然后将 glibc 压缩并复制到 Android 模拟器 sdcard 上,然后在 /system 文件夹上解压缩,然后在 /system/glibc 上执行 chroot
我单独编译 glibc,然后将其放在 Android 源代码中的某个位置。现在在编译 Android 源代码时,我应该怎么做才能将 glibc 的整个预构建文件夹结构复制到 /system 文件夹并成为 system.img 的一部分。
有了这个,当我将 system.img 复制到 Android 模拟器并启动它时,glibc 已经存在于 /system 文件夹中,只需要在 glibc 环境中运行应用程序。
更新
在按照 Yuri 在他的回答中提到的操作(我创建了 glibc 文件夹并将所有内容复制到其中)之后,当我编译代码时,我得到以下输出。
build/core/main.mk:490: * Some files have been added to ALL_PREBUILT.
build/core/main.mk:491: *
build/core/main.mk:492: * ALL_PREBUILT is a deprecated mechanism that
build/core/main.mk:493: * should not be used for new files.
build/core/main.mk:494: * As an alternative, use PRODUCT_COPY_FILES in
build/core/main.mk:495: * the appropriate product definition.
build/core/main.mk:496: * build/target/product/core.mk is the product
build/core/main.mk:497: * definition used in all products.
build/core/main.mk:498: *
build/core/main.mk:499: * unexpected glibc in ALL_PREBUILT
build/core/main.mk:500: *
build/core/main.mk:501: * ALL_PREBUILT contains unexpected files. Stop.
所以我在 build/core/legacy_prebuilts.mk 中添加了 glibc
但后来我得到
make: * No rule to make target mkdir', needed byout/target/product/generic/root/glibc'. Stop.