【问题标题】:How to include util-linux in AOSP?如何在 AOSP 中包含 util-linux?
【发布时间】:2019-11-05 18:08:47
【问题描述】:

如何在 AOSP 中包含来自hereutil-linux?我应该在 AOSP 中的何处添加此 util-linux 文件夹,以便我可以构建 AOSP 并且可以将这些实用程序添加到 /system/bin//system/xbin/ 中?是否有任何特定的 MakefileAndroid.mk 需要使其与 Android 版本一起编译?

【问题讨论】:

    标签: android linux android-source


    【解决方案1】:

    检查您要添加的库是否已存在于https://android.googlesource.com/ 总是值得的。不幸的是,在你的情况下,它没有。

    因为util-linux 不附带Android.bp。您必须了解util-linux 是如何构建的,以及Soong 如何创建自定义Android.bp 以进行集成。放置它的正确文件夹是external/util-linux/

    也许您会想走捷径,只需将util-linux 添加为预构建的二进制文件。这将减少工作量。

    不过,请先检查许可问题。

    【讨论】:

    • 感谢您的提醒。我会检查你的链接以及如何制作它。您认为我应该在 AOSP 中的哪个位置添加文件夹?在external?
    【解决方案2】:

    我在 AOSP 中添加了来自 util-linux 包的应用程序。

    这就是我的做法。我在 AOSP 文件夹的 external 中添加了 https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.34/util-linux-2.34.tar.gz 中的 util-linux (2.34)。

    我只是想从util-linux 添加chrt。因此,我在util-linux 中运行普通的make 命令来查看为chrt 编译了哪些文件。我做了一个笔记并相应地创建了一个Android.mk。我确信有一种更好的方法可以通过首先创建库然后使chrt 可执行来分层执行此操作。但是,这也有效。

    我在external\util-linux\ 添加了以下Android.mk。 Android.mk 如下所示:

     LOCAL_PATH := $(call my-dir)
    
     include $(CLEAR_VARS)
     LOCAL_MODULE := sohamchrt
    
     LOCAL_SRC_FILES := schedutils/chrt.c lib/blkdev.c lib/canonicalize.c \
         lib/crc32.c lib/crc32c.c lib/idcache.c lib/fileutils.c \
         lib/ismounted.c lib/color-names.c lib/mangle.c lib/match.c lib/mbsalign.c \
         lib/mbsedit.c lib/md5.c lib/pager.c lib/parse-date.c lib/pwdutils.c lib/randutils.c \
         lib/setproctitle.c lib/strutils.c lib/timeutils.c lib/ttyutils.c lib/exec_shell.c \
         lib/strv.c lib/sha1.c lib/signames.c lib/linux_version.c lib/loopdev.c \
         lib/plymouth-ctrl.c lib/cpuset.c lib/path.c lib/procutils.c lib/sysfs.c
    
     LOCAL_CFLAGS = -DHAVE_NANOSLEEP -include config.h \
                    -isystem bionic/libc/upstream-openbsd/android/include
    
     LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
    
     include $(BUILD_EXECUTABLE)
    

    现在,当我运行 m -j8 iso_img 时,Android 会尝试编译 sohamchrt。我将包命名为sohamchrt,因为chrt 已经由toybox 提供,但有限制。

    问题是util-linuxbionic 不完全兼容。因此,我需要对一些 .c 和 .h 文件进行一些更改,例如 fileutils.c, include/c.h 等。

    编译成功后,二进制sohamchrt在Android运行时出现在/system/bin中,运行没有问题。

    这也是关于如何在 AOSP 中为用户空间可执行二进制文件添加 C 源文件的指南。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多