arduino程序封装成静态库

参考文章:arduino .a静态库制作和使用

https://arduino.github.io/arduino-cli/0.19/library-specification/

.a静态库文件

.a文件即静态库文件,静态库文件把.o文件打包,一方面易于移植使用,一方面可以保护源码不被反汇编或者被泄露。

ps:arduino推崇开源共享,非必要情况下建议大家开源源码,使用他人库制作静态库需遵循开源许可。

1 生成.a文件

创建一个库,比如TEST_Library,创建库文件,一般文件结构如下,可以从别的库复制修改,附件也提供

├─examples
│  └─TEST
│      test.ino
└─src
    │  test.h
    │  test.cpp
│  keywords.txt
│  library.json
│  library.properties
│  LICENSE
│  README.md
│

在这里插入图片描述

重点在于创建的library.properties文件,在文件末尾加入一行dot_a_linkage=true意思为把此库编译为.a文件。

name=test
version=1.0.0
author=rousir
maintainer=rousir
sentence=Arduino libary
paragraph=
category=demo
url=https://github.com/rousir
architectures=*
includes=test.h
dot_a_linkage=true

在这里插入图片描述

.h .cpp文件和示例中写入自己的源码,比如我写了个helloworld

/*******test.h******/
#ifndef test_h
#define test_h

#include "Arduino.h"

class TEST
{
public:
  TEST();
  void print();
private:
  ;
};

#endif
/*******test.c******/
#include "Arduino.h"
#include "test.h"

TEST::TEST(){
	Serial.println("TEST");
}

void TEST::print(){
	Serial.println("hellow world");
}

在这里插入图片描述
然后将此库导入arduino ide,在arduino ide中编译此项目,编译完成后即可在编译目录中生成我们需要的.a文件,将.a和.h提取出来,编译文件夹在系统临时文件夹中。

我是直接把文件夹复制到libary目录下:
在这里插入图片描述
打开examples中的项目,进行编译
在这里插入图片描述
在这里插入图片描述
编译成功后,在C:\Users\[用户名]\AppData\Local\Temp目录下找到build的目录
在这里插入图片描述
在这里插入图片描述

2 使用库文件

上面生成.a文件后。提取出.a文件,新建一个库拷贝和上面相同的文件,删除功能实现文件.cpp,只保留.h文件,文件结构如下:
在这里插入图片描述

修改library.properties文件,删除dot_a_linkage=true,添加一行precompiled=true
然后编译。

发现错误:
在这里插入图片描述
需要把.a静态库放在mcu命名的目录下:

在这里插入图片描述
再次编译,就完成了。
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值