我是靠谱客的博主 温柔黑猫,最近开发中收集的这篇文章主要介绍Android代码树中编译自定义动态库和可执行程序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 在extern目录下新建目录demo

2. 进入demo目录,创建一个文件和两个文件夹。文件为Android.mk,用于配置Android编译系统,两个文件夹分别为include,src,分别用于存储头文件和源文件。

Android.mk文件代码如下:

# 首先配置当前目录变量,用于后面设置头文件、源文件目录引用
LOCAL_PATH := $(call my-dir)
# 清理所有值变量,这是每个模块的编译文件首先要写的语句。
include $(CLEAR_VARS)
# 定义编译目标名称,用于makefile识别,lib开头表示这是一个库(约定命名规则)
LOCAL_MODULE:= libmax
# 下面配置源文件,这里要注意了,如果没有第一行为LOCAL_PATH设置值,这里就要给出绝对路径了。
LOCAL_SRC_FILES:= 
src/Man.cpp 
# 下面配置头文件目录,注意上面""会作用于其下面的一行,所以这里留个空行。
# 经验证,这里并不能省略$(LOCAL_PATH),与设置源文件目录时有所不同。
LOCAL_C_INCLUDES := 
$(LOCAL_PATH)/include 
# 这一行决定要编码出来什么,这里表示动态库,这一行要放到一个目标的最下面一行。到此,就结束了。
include $(BUILD_SHARED_LIBRARY)
# 下面再定义一个编译可执行文件,并使用上面的库。
# 每个项目第一句都是这个
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= 
src/test.cpp
# 关键行,设置编译时的链接操作,表示链接libmax.so,也就是上面编译的那个库。"lib"和".so"可以省略。
LOCAL_CFLAGS:= -lmax
LOCAL_C_INCLUDES := 
$(LOCAL_PATH)/include 
# 除了上面设置了链接操作,这里也可以通过android编译系统的变量进行依赖库的声明,一般依赖库使用这种方式。LOCAL_CFGLAS则用于宏变量的声明或者FLAG的设置。
LOCAL_SHARED_LIBRARIES := 
libmax 
# 编译目标名称
LOCAL_MODULE:= test
# 编译可执行程序,最后一行,到此一切结束。
include $(BUILD_EXECUTABLE)

3.  在include目录中,加入我们库的头文件Man.h,定义一个类Man:

class Man {
public:
Man();
};
4. 在src中,加入两个源文件:

#include "Man.h"
int main() {
Man man;
}

#include "Man.h"
Man::Man() {
}



最后

以上就是温柔黑猫为你收集整理的Android代码树中编译自定义动态库和可执行程序的全部内容,希望文章能够帮你解决Android代码树中编译自定义动态库和可执行程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部