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

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

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

Android.mk文件代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 首先配置当前目录变量,用于后面设置头文件、源文件目录引用 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:

复制代码
1
2
3
4
class Man { public: Man(); };
4. 在src中,加入两个源文件:

复制代码
1
2
3
4
#include "Man.h" int main() { Man man; }

复制代码
1
2
3
#include "Man.h" Man::Man() { }



最后

以上就是温柔黑猫最近收集整理的关于Android代码树中编译自定义动态库和可执行程序的全部内容,更多相关Android代码树中编译自定义动态库和可执行程序内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部