忍者:错误:...libmemalloc_intermediates/export_includes',需要...,缺少并且没有已知的规则可以做到
Posted
技术标签:
【中文标题】忍者:错误:...libmemalloc_intermediates/export_includes\',需要...,缺少并且没有已知的规则可以做到【英文标题】:ninja: error: ...libmemalloc_intermediates/export_includes', needed by ..., missing and no known rule to make it忍者:错误:...libmemalloc_intermediates/export_includes',需要...,缺少并且没有已知的规则可以做到 【发布时间】:2018-01-30 15:47:03 【问题描述】:我正在尝试为 Lithium(小米 Mi Mix)构建 Cardinal(牛轧糖)。我必须首先说:我之前已经成功构建了一些基于 LineageOS 的 android rom。这是编译基于 AOSP 的几种尝试之一,和以前一样,由于 rom 和设备/供应商源的普遍不匹配,我遇到了直接的问题。我尽可能广泛地研究所有这些问题,并且可以解决一些问题,但其他问题对我来说很难破解。
作为这个:
ninja: Entering directory `.'
ninja: error: '/home/albertoduqe/cardinal/out/target/product/lithium/obj_arm/SHARED_LIBRARIES/libmemalloc_intermediates/export_includes', needed by '/home/albertoduqe/cardinal/out/target/product/lithium/obj_arm/SHARED_LIBRARIES/copybit.msm8996_intermediates/import_includes', missing and no known rule to make it
build/core/ninja.mk:151: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
make: Leaving directory '/home/albertoduqe/cardinal'
#### make failed to build some targets (52 seconds) ####
我在 ***、XDA 和 googlesource 中搜索了 libmemalloc,但找不到太多。它应该是一些 Qcom 显示器 LOCAL_MODULE,我发现它在这里被引用,例如: https://github.com/LineageOS/android_hardware_qcom_display/blob/cm-14.1/msm8996/libgralloc/Android.mk
我的本地工作树中有这些和(我相信)其余的硬件/qcom(以及供应商和设备/qcom)源,所以我不知道我错过了什么,如果它是一个回购我没有同步,或者我应该替换另一个同步的同步,或者可能导致失败的某些 mk 文件中的某些更改。
任何提示将不胜感激。谢谢!
【问题讨论】:
您是否运行了午餐命令并选择了正确的命令? 【参考方案1】:在目标 makefile 中声明 LOCAL_C_INCLUDES。这可能会有所帮助。
【讨论】:
也许您可以提供更深入的答案或提供示例。【参考方案2】:提供库和包含文件的模块(libmemmalloc,在您的情况下,基于集成模块在哪里寻找 export_includes 文件)需要在其 Android.mk 中设置 LOCAL_EXPORT_C_INCLUDE_DIRS 。如果 LOCAL_EXPORT_C_INCLUDE_DIRS 不为空,构建过程将自动生成此文件,然后允许设置 LOCAL_C_INCLUDES 的 other 模块读取它(这些模块也将写入 @987654322 @ 文件,其中包含他们想要的包含路径列表)。
根据导出包含的模块类型,此处以几种不同的方式对其进行了描述:https://android.googlesource.com/platform/build/+/master/core
【讨论】:
【参考方案3】:如果您正在构建沿袭,最好在架构标志之后将其添加到您的设备 BoarConfig.mk
BOARD_USES_QCOM_HARDWARE := true
这个在 device.mk 中
PRODUCT_PACKAGES += \
gralloc.msm8953 \
copybit.msm8953 \
hwcomposer.msm8953 \
memtrack.msm8953 \
android.hardware.graphics.allocator@2.0-impl \
android.hardware.graphics.allocator@2.0-service \
android.hardware.graphics.composer@2.1-impl \
android.hardware.graphics.composer@2.1-service \
android.hardware.graphics.mapper@2.0-impl \
android.hardware.memtrack@1.0-impl \
android.hardware.memtrack@1.0-service \
libdisplayconfig \
libqdMetaData.system
【讨论】:
【参考方案4】:将以下内容添加到您的 BoardConfig.mk 文件中
#Display
TARGET_USES_GRALLOC1 := true
TARGET_USES_HWC2 := true
【讨论】:
以上是关于忍者:错误:...libmemalloc_intermediates/export_includes',需要...,缺少并且没有已知的规则可以做到的主要内容,如果未能解决你的问题,请参考以下文章
Cmake忍者错误android。尽管文件存在,但“缺少并且没有已知的规则”
忍者:错误:...libmemalloc_intermediates/export_includes',需要...,缺少并且没有已知的规则可以做到
我可以在 android p 中使用 android.mk 吗?我得到了忍者:错误:未知目标 'MODULES-IN-xxxx'