模块依赖关系在Android中是如何工作的?
我对subinary()做了一些小修改,添加了一个目标来设置SUID。 我使用的Android.mk: 在Android源代码树的根目录下运行make时,一切正常:模块依赖关系在Android中是如何工作的?,android,makefile,Android,Makefile,我对subinary()做了一些小修改,添加了一个目标来设置SUID。 我使用的Android.mk: 在Android源代码树的根目录下运行make时,一切正常: $ make -j5 [...] system/core/rootdir/Android.mk:42: warning: ignoring old commands for target `out/target/product/panda/root/init.rc' echo "Setting SUID/GUID to su-bin
$ make -j5
[...]
system/core/rootdir/Android.mk:42: warning: ignoring old commands for target `out/target/product/panda/root/init.rc'
echo "Setting SUID/GUID to su-binary"
Setting SUID/GUID to su-binary
Installing busybox
chmod ug+s out/target/product/panda/system/xbin/su
[...]
在外部/su二进制文件中运行mm-B
时:
mmm外部/su二进制文件的行为相同
据
除了王颖建议的“命名模块”之外,您还可以
在目录中运行“mm”以构建(并安装)定义的所有模块
那里但是,这将只构建那些模块,任何依赖的
模块将不会生成。因此,它只对增量数据有用
在其中跟踪依赖项的现有树的生成
尝试:
$ rm out/target/product/panda/system/xbin/su
$ make external/su-binary
[...]
make: Nothing to be done for `external/su-binary'.
$ rm out/target/product/panda/obj/EXECUTABLES/su_intermediates/su
$ make external/su-binary
[...]
make: Nothing to be done for `external/su-binary`.
模块依赖关系在Android中是如何工作的?好的,我通过更改Android.mk来运行它:
将$(SU\u BINARY)
目标命名为不同的名称,即$(SU\u BINARY)-post
。更好的是,它与由LOCAL\u模块
和BUILD\u可执行文件
组合定义的目标具有相同的名称
将此目标放在include$(BUILD\u可执行文件)
它看起来像:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := su
LOCAL_SRC_FILES := su.c db.c activity.cpp
SU_SHARED_LIBRARIES := liblog libsqlite
ifeq ($(PLATFORM_SDK_VERSION),4)
LOCAL_CFLAGS += -DSU_LEGACY_BUILD
SU_SHARED_LIBRARIES += libandroid_runtime
else
SU_SHARED_LIBRARIES += libcutils libbinder libutils
LOCAL_MODULE_TAGS := eng
endif
LOCAL_C_INCLUDES += external/sqlite/dist
LOCAL_SHARED_LIBRARIES := $(SU_SHARED_LIBRARIES)
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
SU_INSTALL_DIR := $(TARGET_OUT)/xbin
SU_BINARY := $(SU_INSTALL_DIR)/su
# taken from busybox-android
$(SU_BINARY)-post: su
@echo "Setting SUID/GUID to su-binary..."
chmod ug+s $(TARGET_OUT_OPTIONAL_EXECUTABLES)/su
ln -sf $(TARGET_OUT_OPTIONAL_EXECUTABLES)/su $(TARGET_OUT_EXECUTABLES)/su
ALL_DEFAULT_INSTALLED_MODULES += $(SU_BINARY)-post
include $(BUILD_EXECUTABLE)
所有默认安装的模块
都是在模块安装后很晚才会出现的规则。但我必须深入研究一下,看看这是否是我想在这里做的事情的最佳解决方案。感谢没有发表评论的否决票,我很感激……感谢你花时间让我们知道答案。我想与你讨论一个类似的问题!!我们可以谈谈吗???@Neji用代码示例推送您的问题。你很有可能很快得到答案。