在Android AOSP中使用预建的共享库 [英] Use Prebuilt Shared Library in Android AOSP

查看:61
本文介绍了在Android AOSP中使用预建的共享库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在AOSP中使用一个预先构建的共享库.该库在Android.mk中的定义如下:

I want to use a pre-built shared library in AOSP. The library is defined in Android.mk like this:

include $(CLEAR_VARS)
LOCAL_MODULE := foo
LOCAL_MODULE_SUFFIX := .so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAG := optional
LOCAL_MODULE_PATH := system/lib
LOCAL_SRC_FILE := system/lib/foo.so
include $(BUILD_PREBUILT)

在构建过程中,文件夹out/target/product/mako/obj/SHARED_LIBRARIES/foo_intermediates/export_include 已创建.

During build, a folder out/target/product/mako/obj/SHARED_LIBRARIES/foo_intermediates/export_include was created.

但是,构建失败并显示错误消息,提示找不到out/target/product/mako/obj_arm/SHARED_LIBRARIES/foo_intermediates/export_include.

However, the build failed with error message that out/target/product/mako/obj_arm/SHARED_LIBRARIES/foo_intermediates/export_include cannot be found.

请注意"obj"和"obj_arm"之间的区别.是什么原因引起的?

Note the difference between "obj" and "obj_arm". What caused the problem?

推荐答案

这是两个目标的版本(arm和arm64),因此有两个obj文件夹,一个用于32位arm,另一个用于64位arm.

This is two-target build (arm and arm64), so there are two obj folders, one for 32-bit arm and the other for 64-bit arm.

我需要如下定义库:

include $(CLEAR_VARS)
LOCAL_MODULE := libfoo
LOCAL_MODULE_SUFFIX :=.so
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_TAGS := optional
LOCAL_PRELINK_MODULE := false
ifdef TARGET_2ND_ARCH
LOCAL_MULTILIB := both
LOCAL_MODULE_PATH_64 := system/lib64
LOCAL_SRC_FILES_64 := system/lib64/libfoo.so
LOCAL_MODULE_PATH_32 := system/lib
LOCAL_SRC_FILES_32 := system/lib/libfoo.so
else
LOCAL_MODULE_PATH := system/lib
LOCAL_SRC_FILES := system/lib/libfoo.so
endif
include $(BUILD_PREBUILT)

这篇关于在Android AOSP中使用预建的共享库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆