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() {
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值