Android高通平台下编译时能生成(拷贝)预编译的so到system的lib目录
?
通過編譯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的值一樣。
?
總結
以上是生活随笔為你收集整理的Android高通平台下编译时能生成(拷贝)预编译的so到system的lib目录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux设备驱动模型概述(Linux
- 下一篇: Android系统编译so库提示erro