工作中需要编译出一个可执行文件,adb push到板子里面运行。这个可执行文件需要依赖两个共享库:uvc_cam、camnetstream。所谓预编译,我的理解就是不需要提供c和cpp源码,直接提供so库给可执行文件,从而减少编译时间,但是即使这样,我们也要用预构建来声明一个共享库模块。下面分析一下这个Android.mk文件。
LOCAL_PATH:= $(call my-dir)
返回当前Android.mk所在的路径
include $(CLEAR_VARS)
LOCAL_MODULE := camnetstream
LOCAL_SRC_FILES := $(LOCAL_PATH)/prebuild/libcamnetstream.so
include $(PREBUILT_SHARED_LIBRARY)
1. 清除LOCAL_XXX变量,在每次声明新模块时都要先清除
2.声明模块的名字
3.预编译提供的so库
4.预构建共享库
include $(CLEAR_VARS)
LOCAL_MODULE := uvc_cam
LOCAL_SRC_FILES := $(LOCAL_PATH)/prebuild/libuvc_cam.so
include $(PREBUILT_SHARED_LIBRARY)
同理
include $(CLEAR_VARS)
LOCAL_MODULE := cameramain
LOCAL_CFLAGS += -O2 -g -fpermissive -std=c99
LOCAL_LDFLAGS += -pie -fPIE
LOCAL_C_INCLUDES += $(LOCAL_PATH) \
$(LOCAL_PATH)/alac\
$(LOCAL_PATH)/crypto\
$(LOCAL_PATH)/libplist/include/plist\
LOCAL_SRC_FILES := cam_log.cpp cam_main.cpp
LOCAL_MODULE_TAGS :=optional
LOCAL_SHARED_LIBRARIES := camnetstream uvc_cam
LOCAL_LDLIBS := -llog -ldl
include $(BUILD_EXECUTABLE)