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

网友投稿 2252 2022-09-10

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

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

前言

在编写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.cLOCAL_C_INCLUDES += \         $(LOCAL_PATH)/libcjsonLOCAL_SHARED_LIBRARIES += \     liblog libcutils libutils \     libmycjson \LOCAL_CFLAGS += -Wno-error \         -Wno-unused-parameterLOCAL_MODULE:= cjson_testLOCAL_MODULE_TAGS := optional LOCAL_MULTILIB := 64include $(BUILD_EXECUTABLE)include $(curdir)/libcjson/Android.mk

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:面向对象三大特性之继承(面向对象的继承有几种)
下一篇:VSCode, Django, and Anaconda开发环境集成配置[Windows](vscode怎么运行代码)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~