RT-Thread Studio开发环境提供了丰富的组件和软件包,给开发者带来很大的方便,但毕竟还有些功能和函数,因种种原因,未能开源,是以库文件方式提供的。这就需要以手工的方式自己添加,下面以一个例子来详细说明手工添加库文件的过程。
库文件分为静态库和动态库,但在嵌入式系统的开发中,因内存及处理器速度的限制,使用库函数时,基本上采用静态库的方式。静态库命名规范,必须是"lib[静态库名].a"格式,其中lib为前缀,中间是静态库名,扩展名为.a。在手动添加库文件时要注意库名和库文件名之间的区别。下面以在RT-Thread中实现FTP功能的库为例(库文件见:https://github.com/loogg/ftp)来作说明。
第一步:解压从github中下载来的压缩文件,ftp-master目录下有两个子目录,inc目下有三个头文件,libs目录下为库文件libFTP_gcc.a,注意:库名为FTP_gcc。把ftp-master拷贝到项目的libraries目录下,刷新工程后可见目录结构如下:
第二步:按照以下图2所示顺序添加头文件路径。
补充说明,因库是经过编译后提供给使用者的,针对某一处理器内核编译后的,不一定能在另外一种内核上使用,比如libFTP_gcc.a在STM32F1平台上编译时会报错:“uses VFP register arguments, rtthread.elf does not” ,这表明STM32F1内核硬件不支持VFP(virtual float point)浮点运算方式 ,因 libFTP_gcc.a是在Cortex M4内核上编译的,带FPU,支持硬件的浮点运算方式。所以这个FTP库不能在STM32F1平台上运行,除非库的作者在编译时加上CFLAGS += -mfloat-abi=softfp,强制使用软件浮点运算。