如何在 AOSP 中包含 util-linux?
How to include util-linux in AOSP?
如何在 AOSP 中包含 here 中的 util-linux
?我应该在 AOSP 中的什么地方添加这个 util-linux
文件夹,以便我可以构建 AOSP 并且可以将这些实用程序添加到 /system/bin/
或 /system/xbin/
中?是否有任何特定的 Makefile
或 Android.mk
需要使用 Android build 进行编译?
检查您要添加的库是否已存在于 https://android.googlesource.com/ 总是值得的。不幸的是,您的情况并非如此。
因为 util-linux
没有 Android.bp
。您将必须了解 util-linux
的构建方式以及 Soong 如何创建用于集成的自定义 Android.bp
。放置它的正确文件夹是 external/util-linux/
.
也许您会想走捷径,只需添加 util-linux
作为预构建的二进制文件。这将减少工作量。
不过,请先检查许可问题。
我已经从 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-linux
与 bionic
不完全兼容。所以,我需要对一些 .c 和 .h 文件进行一些更改,例如 fileutils.c, include/c.h
等
编译成功后,当Android为运行ning时,二进制文件sohamchrt
出现在/system/bin
中,正常运行。
这也是关于如何在 AOSP 中为用户空间可执行二进制文件添加 C 源文件的指南。
如何在 AOSP 中包含 here 中的 util-linux
?我应该在 AOSP 中的什么地方添加这个 util-linux
文件夹,以便我可以构建 AOSP 并且可以将这些实用程序添加到 /system/bin/
或 /system/xbin/
中?是否有任何特定的 Makefile
或 Android.mk
需要使用 Android build 进行编译?
检查您要添加的库是否已存在于 https://android.googlesource.com/ 总是值得的。不幸的是,您的情况并非如此。
因为 util-linux
没有 Android.bp
。您将必须了解 util-linux
的构建方式以及 Soong 如何创建用于集成的自定义 Android.bp
。放置它的正确文件夹是 external/util-linux/
.
也许您会想走捷径,只需添加 util-linux
作为预构建的二进制文件。这将减少工作量。
不过,请先检查许可问题。
我已经从 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-linux
与 bionic
不完全兼容。所以,我需要对一些 .c 和 .h 文件进行一些更改,例如 fileutils.c, include/c.h
等
编译成功后,当Android为运行ning时,二进制文件sohamchrt
出现在/system/bin
中,正常运行。
这也是关于如何在 AOSP 中为用户空间可执行二进制文件添加 C 源文件的指南。