Android高通平台下编译时能生成(拷贝)预编译的so到system的lib目录

本文深入解析了Android编译系统的内部机制,特别是如何将.so库正确地拷贝到目标路径。通过具体案例,详细介绍了如何在硬件模块中新增.so库,并使其在系统级编译过程中被正确识别和处理。

 

  1. 参考hardware\qcom\display\libcopybit

通过编译log可以知道编译到这里,生成的copybit.msm8937.so在out\target\product\msm8937_64\system\lib\hw下。libcopybit\Android.mk相关部分如下:

编译相关的log

build/core/Makefile:54: Defined in: hardware/qcom/display/libcopybit/../common.mk hardware/qcom/display/libcopybit/../common.mk

build/core/Makefile:54: Duplicate header copy:

说明build/core/Makefile能找到hardware/qcom/display/libcopybit目录

但我们增加的psam目录,在整个系统编译的时候没有看到这样的log,为什么呢

 

2.在hardware\qcom增加psam文件夹

目的是想在编译的时候把so拷贝到out\target\product\msm8937_64\system\lib下。用mmm单独编译可以,但是用make整个编译的时候却不会,为什么呢?

 

先回到前面看看我们参考的hardware\qcom\display\libcopybit下的copybit.msm8937.so怎么拷贝到system\lib\hw下。在device/qcom目录下通过grep -wrn copybit.msm8937,查找结果如下:

找到LIBCOPYBIT += copybit.msm8937,再通过LIBCOPYBIT再找到PRODUCT_PACKAGES += $(LIBCOPYBIT),android编译系统应该就是通过这里知道去编译hardware\qcom\display\libcopybit,这里需要注意copybit.msm8937是libcopybit文件夹下Android.mk中

LOCAL_MODULE                  :=copybit.$(TARGET_BOARD_PLATFORM)的LOCAL_MODULE的值,LOCAL_MODULE的值可以不需要和文件夹名字(libcopybit)一样,但device/qcom/common/base.mk的PRODUCT_PACKAGES += $(LIBCOPYBIT)对应的值必须是和LOCAL_MODULE的值一样。

 

3. 解决

根据上面的分析,在device/qcom/common/base.mk增加

#LIBPSAM

LIBPSAM := libpsam.so

PRODUCT_PACKAGES += $(LIBPSAM)

hardware\qcom\psam\Android.mk的内容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE       := libpsam.so
LOCAL_SRC_FILES    := libpsam.so
#LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS  := optional
LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_PATH  := $(TARGET_OUT)/lib
include $(BUILD_PREBUILT)

确保LOCAL_MODULE       := libpsam.so和LIBPSAM := libpsam.so的值一样。

 

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loongembedded

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值