简述
本文主要介绍如何基于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
|
步骤如下:
编译命令示例:
./build.sh defconfigs/defconfig_ch6121_evb_peripheral applica
tions/bluetooth/bas/ j64
注意:
需要更新应用的宏定义或者库文件引用时,要更新的是defconfig_ch6121_evb文件。
因为使用build脚本编译时,每次都会将应用目录下的defconfig_ch6121_evb复制为defconfig文件,再开始编译。
2 静态库的引用
静态库文件生成后,应用该如何引用呢?静态库的引用包含两个方面,一个是静态库路径,另一个就是头文件包含。
2.1 如何指定静态库路径
修改根目录下Makefile,编译时将会把自有静态库文件复制到yoc_sdk/cortex-m0/lib/目录下。
注意:Makefile每一行的头部需要用TAB做缩进。
再将应用目录下的库文件引用加上,例如bas应用示例需要用到ble_profile这个库,就修改applications/Bluetooth/bas/defconfig_ch6121_evb文件。
如果是新增库文件的引用,那就在CONFIG_LIBS最后增加库文件名字。
注意:库文件引用需要将libxxx.a的lib前缀去掉。
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