概述
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代码树中编译自定义动态库和可执行程序所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复