Android.mk 包含问题带来的so.toc needed by 错误
Android系统源码开发系列教学视频链接:
Android 10.0 AOSP源码编译:
AOSP源码开发环境搭建教学视频-百问100ask
Android系统 10.0 AOSP源码编译--CSDN程序员研修院
Android 10.0 根文件系统和编译系统:
Android根文件系统和编译系统教学视频-百问100ask
Android 10.0 根文件系统和编译系统-CSDN程序员研修院
前言
在编写Android.mk的时候,编译一个动态库,以及一个链接调用该动态库的程序, 需要两个Android.mk, 编写的时候带来了一些错误,特此记录一下。
问题出错信息:
mytest/lib_test/so_test/Android.mk: error: cjson_test (EXECUTABLES android-arm64) missing libmycjson (SHARED_LIBRARIES android-arm64)
You can set ALLOW_MISSING_DEPENDENCIES=true in your environment if this is intentional, but that may defer real problems until later in the build.
build/make/core/main.mk:833: error: exiting from previous errors.
15:05:47 ckati failed with: exit status 1ninja: error: 'out/target/product/generic_arm64/obj/lib/libmycjson.so.toc', needed by 'out/target/product/generic_arm/obj/EXECUTABLES/cjson_test_intermediates/LINKED/cjson_test', missing and no known rule to make it
上面显示的两处错误, 一个是在mmm模块编译的时候出现, 一个是在全编译的时候出现。
其实主要原因是在目录中出现多个Android.mk的时候, 必须做包含动作, 因为编译系统采用的是递归搜索,在搜索到父文件目录的Android.mk脚本后递归便被终止,导致子目录Android.mk没有编译。
当然还有一种情况, 就是当前程序链接的动态库没有被编译, 那么可以直接通过
make libxxx -j16
其中libxxx就是依赖的那个动态库的模块名。
目录结构
顶层Android.mk控制编译可执行程序。
libcjson目录中的Android.mk控制编译动态库
解决方法
顶层Android.mk
LOCAL_PATH:= $(call my-dir)
curdir=$(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
main.cLOCAL_C_INCLUDES += \
$(LOCAL_PATH)/libcjsonLOCAL_SHARED_LIBRARIES += \
liblog libcutils libutils \
libmycjson \LOCAL_CFLAGS += -Wno-error \
-Wno-unused-parameterLOCAL_MODULE:= cjson_test
LOCAL_MODULE_TAGS := optional
LOCAL_MULTILIB := 64include $(BUILD_EXECUTABLE)
include $(curdir)/libcjson/Android.mk
要对子目录下的Android.mk进行包含
Android.mk 包含问题带来的so.toc needed by 错误相关推荐
- android.mk 编译32位_C/C++初学者常见编译错误及其解决办法
用户在C/C++集成开发环境(例如 Dev-C++)中编辑了源代码,执行编译之后,常常会因为源代码中存在问题而出现编译错误(它们会显示在编译窗口中).初学者常常会面对这些错误而不知如何处理.本文下面列 ...
- Android.mk文件语法规范及使用模板 (转载)
2019独角兽企业重金招聘Python工程师标准>>> http://blogold.chinaunix.net/u3/99423/showart_2206760.html Andr ...
- Android.mk简介
Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译. 因为所有的编译文件都在同一个 GNU MAKE 执行环境中进行执行,而Android.mk中所有的变 ...
- 【翻译】(5)Android.mk File
----------------- 英文文档见android-ndk-r5b的documentation.html 属于Android Native Development Kit (NDK)的一部分 ...
- 【Android.mk】android编译系统makefile文件Android.mk的写法
(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件.由于一般情况下 Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式: LOCAL_PATH:=$ ...
- 4.android.mk编写规范
Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...
- android.mk 翻译,翻译ANDROID-MK.TXT
Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的,这篇文档描述了它的语法.在阅读下面的内容之前,假定你已经阅读了docs/OVERVIEW.TXT文件,了解了它 ...
- Android.mk小结
Android.mk小结 Android.mk结构 多目录Android.mk包含语句 设置头文件搜索路径 设置需要链接的动态库 导出模块头文件路径 导出模块依赖关系 预编译 实例 Android.m ...
- Android.mk文件语法规范及使用模板
2019独角兽企业重金招聘Python工程师标准>>> Android.mk文件语法规范及使用模板 Android.mk文件语法规范 根据eoeandroid上的的连载,进行一些更新 ...
最新文章
- 织梦 m list.php tid,在织梦标签dede:list中增加noflag属性的方法支持5.7版本
- COM编程之四 引用计数
- rust房屋建造蓝图_都说蓝图,而不是白图、红图,你知道为什么?
- php编写 密码检查,php-检查旧密码和新密码的规则
- kotlin android 注解,注解 - Kotlin 语言中文站
- 手机型号大全_2000-2500元智能手机最全导购推荐(学生党手机必看)-2020年12月更新...
- 正则表达式验证邮箱手机号
- word文档中把几个图形组合在一起
- 关于SaaS平台中应对多租户模式的设计
- 阿里数据分析师笔试记录
- Python通过m3u8文件下载合并ts视频
- MATLAB imresize函数的用法
- Could not find any downloads that satisfy the requirement tensorflow
- 射频信号中的邻道功率比(ACPR)和占用带宽(OBW)与测量方法
- console使用方法介绍
- 游戏系统及开发相关概述(上)
- 51单片机的延时函数快速生成技巧
- vue数据改变渲染问题_解决Vue中页面成功渲染数据undefined的问题
- LeetCode 101~105
- C#添加美化包样式 索引的制作,NavMenu组件与TabControl添加页面