芯片开放社区
直播中

王刚

7年用户 1279经验值
私信 关注
[技术讨论]

PHY6212 BLE SDK静态库制作步骤简述

简述

本文主要介绍如何基于PHY6212 BLE SDK制作自有静态库,以及应用代码如何引用静态库。


1 静态库的生成

基于PHY6212 BLE SDK如何生成静态库呢?

我们可以参考ble_profiles组件来学习下,编译静态库主要依赖makefile,在PHY6212 BLE SDK中就是build.mk文件。

#指定L_PATH为当前路径

L_PATH := $(call cur-dir)


#清除全局变量,如L_CFLAGS/L_INCS/L_SRCS

include $(DEFINE_LOCAL)


#指定自有库文件名字,注意:编译完成后,将生成libble_profile.a文件,这就是生成的静态库文件

L_MODULE := libble_profile


#默认编译参数

L_CFLAGS += -Wall


#指定头文件路径

L_INCS += $(L_PATH) kernel/protocols/bluetooth/include


#指定需要编译的C文件

L_SRCS := hids.c bas.c dis.c ibeacons.c hrs.c uart_client.c uart_server.c ota_server.c  


#执行tools/build/core/build_module.mk编译脚本进行编译

ifeq ($(CONFIG_BT), y)

include $(BUILD_MODULE)  

endif



步骤如下:

  • modules目录下创建自己的目录。参照这个mk文件创建自有库文件的mk,根据需要定义L_MODULE/ L_INCS/ L_SRCS
  • 创建自有静态库需要的C文件和头文件
  • 根目录下使用build脚本编译成功后,就可以在yoc_sdk/cortex-m0/lib目录下看到自有静态库文件libxxx.a

编译命令示例:

./build.sh defconfigs/defconfig_ch6121_evb_peripheral applications/bluetooth/bas/ j64



注意:

需要更新应用的宏定义或者库文件引用时,要更新的是defconfig_ch6121_evb文件。

因为使用build脚本编译时,每次都会将应用目录下的defconfig_ch6121_evb复制为defconfig文件,再开始编译。

  • 将生成好的库文件复制到需要发布的SDK指定目录下,例如ble_profile需要闭源的话,我们可以将yoc_sdk/cortex-m0/lib/libble_profile.a文件复制到根目录的某个目录下(这里改了库文件名字)




2 静态库的引用

静态库文件生成后,应用该如何引用呢?静态库的引用包含两个方面,一个是静态库路径,另一个就是头文件包含。

2.1 如何指定静态库路径

修改根目录下Makefile,编译时将会把自有静态库文件复制到yoc_sdk/cortex-m0/lib/目录下。

注意:Makefile每一行的头部需要用TAB做缩进。


再将应用目录下的库文件引用加上,例如bas应用示例需要用到ble_profile这个库,就修改applications/Bluetooth/bas/defconfig_ch6121_evb文件。


如果是新增库文件的引用,那就在CONFIG_LIBS最后增加库文件名字。

注意:库文件引用需要将libxxx.alib前缀去掉。



2.2 如何指定头文件路径

修改根目录下Makefile,将需要export到外部使用的头文件复制到yoc_sdk/cortex-m0/目录下。




修改boards/phyplus/ch6121_evb/ CFLAGS.mk文件,增加全局的头文件引用路径。



尝试使用libble_profile_test.a编译一下BAS

./build.sh defconfigs/defconfig_ch6121_evb_peripheral applications/bluetooth/bas/


编译成功。


在实践过程中,如果有任何疑问也欢迎留言一起探讨~

文章转载自:平头哥芯片开放社区 作者:qinghuan

更多回帖

发帖
×
20
完善资料,
赚取积分