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 1

ninja: 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.c

LOCAL_C_INCLUDES += \
        $(LOCAL_PATH)/libcjson

LOCAL_SHARED_LIBRARIES += \
    liblog libcutils libutils \
    libmycjson \

LOCAL_CFLAGS += -Wno-error \
        -Wno-unused-parameter

LOCAL_MODULE:= cjson_test

LOCAL_MODULE_TAGS := optional
LOCAL_MULTILIB := 64

include $(BUILD_EXECUTABLE)

include $(curdir)/libcjson/Android.mk

要对子目录下的Android.mk进行包含

Android.mk 包含问题带来的so.toc needed by 错误相关推荐

  1. android.mk 编译32位_C/C++初学者常见编译错误及其解决办法

    用户在C/C++集成开发环境(例如 Dev-C++)中编辑了源代码,执行编译之后,常常会因为源代码中存在问题而出现编译错误(它们会显示在编译窗口中).初学者常常会面对这些错误而不知如何处理.本文下面列 ...

  2. Android.mk文件语法规范及使用模板 (转载)

    2019独角兽企业重金招聘Python工程师标准>>> http://blogold.chinaunix.net/u3/99423/showart_2206760.html Andr ...

  3. Android.mk简介

    Android.mk文件是GNU Makefile的一小部分,它用来对Android程序进行编译. 因为所有的编译文件都在同一个 GNU MAKE 执行环境中进行执行,而Android.mk中所有的变 ...

  4. 【翻译】(5)Android.mk File

    ----------------- 英文文档见android-ndk-r5b的documentation.html 属于Android Native Development Kit (NDK)的一部分 ...

  5. 【Android.mk】android编译系统makefile文件Android.mk的写法

    (1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件.由于一般情况下 Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式: LOCAL_PATH:=$ ...

  6. 4.android.mk编写规范

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...

  7. android.mk 翻译,翻译ANDROID-MK.TXT

    Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的,这篇文档描述了它的语法.在阅读下面的内容之前,假定你已经阅读了docs/OVERVIEW.TXT文件,了解了它 ...

  8. Android.mk小结

    Android.mk小结 Android.mk结构 多目录Android.mk包含语句 设置头文件搜索路径 设置需要链接的动态库 导出模块头文件路径 导出模块依赖关系 预编译 实例 Android.m ...

  9. Android.mk文件语法规范及使用模板

    2019独角兽企业重金招聘Python工程师标准>>> Android.mk文件语法规范及使用模板 Android.mk文件语法规范 根据eoeandroid上的的连载,进行一些更新 ...

最新文章

  1. 织梦 m list.php tid,在织梦标签dede:list中增加noflag属性的方法支持5.7版本
  2. COM编程之四 引用计数
  3. rust房屋建造蓝图_都说蓝图,而不是白图、红图,你知道为什么?
  4. php编写 密码检查,php-检查旧密码和新密码的规则
  5. kotlin android 注解,注解 - Kotlin 语言中文站
  6. 手机型号大全_2000-2500元智能手机最全导购推荐(学生党手机必看)-2020年12月更新...
  7. 正则表达式验证邮箱手机号
  8. word文档中把几个图形组合在一起
  9. 关于SaaS平台中应对多租户模式的设计
  10. 阿里数据分析师笔试记录
  11. Python通过m3u8文件下载合并ts视频
  12. MATLAB imresize函数的用法
  13. Could not find any downloads that satisfy the requirement tensorflow
  14. 射频信号中的邻道功率比(ACPR)和占用带宽(OBW)与测量方法
  15. console使用方法介绍
  16. 游戏系统及开发相关概述(上)
  17. 51单片机的延时函数快速生成技巧
  18. vue数据改变渲染问题_解决Vue中页面成功渲染数据undefined的问题
  19. LeetCode 101~105
  20. C#添加美化包样式 索引的制作,NavMenu组件与TabControl添加页面

热门文章

  1. python爬虫selenium-前程无忧
  2. 【51Job数据爬取日志】前程无忧URL请求字段分析
  3. AGA 2019电竞狂欢盛宴开启:为全国校园电竞玩家“圆梦”
  4. php 系统分隔符,php脚本由哪个分隔符包围
  5. Microsoft Edge浏览器插件(1)
  6. PostgreSQL开源界的“活雷锋”
  7. linux下brctl配置网桥
  8. 如何实现自有App上的小程序第三方微信授权登陆?
  9. 荣耀v40pro和华为nova8pro哪个好?
  10. Apple iPad