Android.mk静态库使用方法

 

项目树描述

  1. 静态库目录
    1. 一级目录下有Android.mk,CMakeList.txt,test.cpp以及include目录
    2. 二级目录include下有test.h
  2. 主程序目录
    1. 一级目录下有Android.mk,test_main.cpp以及二级目录lib
    2. 二级目录lib下有libtest.a和三级目录include
    3. 三级目录include下有test.h

静态库生成和使用

  • 通过Android.mk文件生成静态库
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := test.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
LOCAL_MODULE := test
LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
include $(BUILD_STATIC_LIBRARY)

  • 通过CMakeList.txt文件生成静态库
    • 交叉编译,基于NDK编译,先设置环境变量
    • # TOP变量设置需根据具体情况,这里是将工具链放在android_toolchain目录下
      export TOP=/home/user/android_toolchain
      SYSROOT=$TOP/sysroot
      export PATH=$TOP/bin:$PATH
      target_host=aarch64-linux-android
      export AR=$target_host-ar
      export AS=$target_host-clang
      export CC=$target_host-clang
      export CXX=$target_host-clang++
      
    • 然后cmake -DCMAKE_TOOLCHAIN_FILE="$TOP"/build/aos-toolchain.cmake ..(注:DCMAKE_TOOLCHAIN_FILE是配置cmake,它定义了一个文件的路径,里面set了一系列变量用于指定Target是什么平台。具体可参看https://blog.csdn.net/bytxl/article/details/50635788
    • PROJECT (test)
      set(CMAKE_CXX_FLAGS_1 "-std=c++11 -pedantic")
      set(CMAKE_CXX_FLAGS_2 "-Wno-variadic-macros -Wall -Wunused -Wunreachable-code")
      set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_1} ${CMAKE_CXX_FLAGS_2}")
      set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O2 -DNDEBUG")
      
      set(ALL_SRC_FILE test.cpp)
      include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
      message("===${CMAKE_CURRENT_SOURCE_DIR}")
      add_library(test STATIC ${ALL_SRC_FILE})
      
  • 通过Android.mk文件使用静态库(目前只能使用Android.mk文件生成的静态库,使用CMakeList.txt生成的静态库存在问题,猜测Android.mk集成预编译静态库,只能集成Android.mk文件生成的静态库 或者 是NDK版本与系统不匹配
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test 
LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/libtest.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/lib/include
include $(PREBUILT_STATIC_LIBRARY)
$(warning "====$(LOCAL_PATH)==$(TARGET_ARCH_ABI)=")

include $(CLEAR_VARS)
LOCAL_SRC_FILES := test_main.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/lib/include
LOCAL_STATIC_LIBRARIES := test
LOCAL_MODULE := test_main
LOCAL_CFLAGS += -Wall -Werror -Wunused -Wunreachable-code
include $(BUILD_EXECUTABLE)
发布了42 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ustczhng2012/article/details/104072105
今日推荐