linux ndk在同一个android.mk 中如何同时编译静态库和动态库? linux 环境不使用android studio
时间: 2023-12-12 16:05:31 浏览: 122
linux 静态库和动态库的编写
在同一个 Android.mk 文件中编译静态库和动态库需要使用不同的模块类型,静态库使用 `STATIC_LIBRARY`,动态库使用 `SHARED_LIBRARY`。以下是一个示例:
```
include $(CLEAR_VARS)
LOCAL_MODULE := my_static_lib
LOCAL_SRC_FILES := my_static_lib.cpp
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_CFLAGS := -Wall
include $(BUILD_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := my_dynamic_lib
LOCAL_SRC_FILES := my_dynamic_lib.cpp
LOCAL_SHARED_LIBRARIES := my_static_lib
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_CFLAGS := -Wall
include $(BUILD_SHARED_LIBRARY)
```
在上面的示例中,我们定义了两个模块,`my_static_lib` 和 `my_dynamic_lib`,分别是静态库和动态库。`my_dynamic_lib` 依赖于 `my_static_lib`,所以我们在 `my_dynamic_lib` 中使用 `LOCAL_SHARED_LIBRARIES` 指定静态库的依赖。
然后,在 `include $(BUILD_STATIC_LIBRARY)` 和 `include $(BUILD_SHARED_LIBRARY)` 之间使用 `include $(CLEAR_VARS)` 清除之前的变量定义。
最后,运行 `ndk-build` 命令即可编译生成两个库文件。
阅读全文