Including prebuilt static library in Android build system

匿名 (未验证) 提交于 2019-12-03 08:46:08

问题:

I need to build a shared library based on a prebuilt static library. My makefile src/android/external/mycode/Android.mk:

LOCAL_PATH:= $(call my-dir)  include $(CLEAR_VARS) LOCAL_ARM_MODE := arm LOCAL_MODULE := libMyStatic LOCAL_SRC_FILES := libStatic.a include $(PREBUILT_STATIC_LIBRARY)  include $(CLEAR_VARS) LOCAL_MODULE_TAGS := eng LOCAL_ARM_MODE := arm LOCAL_PRELINK_MODULE := false LOCAL_MODULE    := libMyShared LOCAL_WHOLE_STATIC_LIBRARIES := libMyStatic include $(BUILD_SHARED_LIBRARY) 

I build it by doing: mmm external/mycode and get the error:

make: *** No rule to make target `out/target/product/generic/obj/STATIC_LIBRARIES/libMyStatic_intermediates/libMyStatic.a', needed by `out/target/product/generic/obj/SHARED_LIBRARIES/libMyShared_intermediates/LINKED/libMyShared.so'.  Stop. make: Leaving directory `/home/test/src/android' 

If I do the following manually and run mmm again it works:

cp external/mycode/libStatic.a out/target/product/generic/obj/STATIC_LIBRARIES/libMyStatic_intermediates/libMyStatic.a 

If I make an NDK project and use this Android.mk file I think it works right away when calling the ndk-build script. So the problem has something to do with that the libMyStatic.a file is not created and copied to the intermediate folder when I use the Android Build system. Can anyone tell me what I need to setup to make the build system copy the static library to the intermediate folder?

回答1:

modify your mk file

"LOCAL_WHOLE_STATIC_LIBRARIES := libMyStatic" 

to

"LOCAL_LDFLAGS += -lMyStatic 


回答2:

Try building your static library like this.

include $(CLEAR_VARS)  LOCAL_MODULE := libMyStatic LOCAL_MODULE_CLASS := STATIC_LIBRARIES LOCAL_MODULE_SUFFIX := .a LOCAL_SRC_FILES := libMyStatic.a  include $(BUILD_PREBUILT) 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!