首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AOSP中包含util-linux?

如何在AOSP中包含util-linux?
EN

Stack Overflow用户
提问于 2019-11-06 02:08:47
回答 2查看 433关注 0票数 0

如何在AOSP中包含来自hereutil-linux?我应该在AOSP的什么地方添加这个util-linux文件夹,这样我就可以构建AOSP,并且这些工具可以添加到/system/bin//system/xbin/中?有没有什么特别的Makefile或者Android.mk需要我用Android build来编译?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-07 04:28:52

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

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

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

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

代码语言:javascript
复制
 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时,安卓试图编译sohamchrt。我之所以将这个包命名为sohamchrt,是因为toybox已经提供了chrt,但它是有限制的。

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

编译成功后,当Android运行时,二进制sohamchrt会出现在/system/bin中,并且工作正常。

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

票数 0
EN

Stack Overflow用户

发布于 2019-11-06 04:45:08

检查您想要添加的库是否已经存在于https://android.googlesource.com/中总是值得的。不幸的是,在您的情况下,情况并非如此。

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58717122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档