Я добавил приложение из пакета util-linux
в AOSP.
Вот как я это сделал. Я добавил util-linux
(2,34) из https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.34/util-linux-2.34.tar.gz в external
папки AOSP.
Я просто хотел добавить chrt
из util-linux
. Поэтому я запускаю обычную команду make
в util-linux
, чтобы посмотреть, какие файлы скомпилированы для chrt
. Я сделал заметку и создал Android.mk
соответственно. Я уверен, что есть лучший способ сделать это иерархически: сначала создать библиотеку, а затем сделать исполняемый файл chrt
. Однако это тоже работает.
Я добавил следующее Android.mk
в external\util-linux\
. 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
и т. Д.
После успешной компиляции двоичный файл sohamchrt
появляется в /system/bin
, когда работает Android, иэто работает без проблем.
Это также руководство о том, как добавить исходный файл C для исполняемого двоичного файла пользовательского пространства в AOSP.