在VxWorks系统下进行驱动或者应用程序开发,通常有两种情形,一种是源码开发,拥有所有的源代码,建工程和编译生成应用或者系统镜像,都基于源码。另外一种是基于库的开发,可能是一些商业的库,也可能是自己为了保护知识产权,特意制作成库文件提供给使用方。
最近一个项目中开发了几块CPCI板卡,驱动已经驾轻就熟,可是这次甲方需要将驱动封装成库,这个以前没做过,研究了一下,现于大家分享。
最简单的办法,是新建一个download工程,把所有源文件加进去。
以Tornado2.2为例,可以在工程管理树那里选Builds选项卡(另外两个是files和vxworks),再右键点你所用的Buid模式,选 properties,然后再rules选项里选输出格式。选archive输出.a文件,选object输出.o文件。
同样,在需要包含.o和.a文件的那个工程里,在Builds->properties->macros里选择PRJ_LIBS,如果是vxworks,则选EXTRA_MODULES,然后填入需要包含的.o和.a文件的全路径。然后编译就OK了。
注:实际应用中将Builds->properties->rules 中选择输出格式为archive就OK了 ,编译后库文件的名字就是创建工程的名字。
使用方法:
1. 创建.h头文件
#ifndef __CPCIDRIVER_H__ #define __CPCIDRIVER_H__ #ifdef __cplusplus extern "C" { #endif typedef struct { DEV_HDR devHdr; /* 必须 */ } CPCI16IO_DEV; /* 其他定义 */ IMPORT STATUS cpci32ioInit(void); //声明外部函数 IMPORT STATUS cpci32ioDrv(void); IMPORT STATUS cpci32ioDevCreate(char *devName); #ifdef __cplusplus } #endif #endif /* __INCcpci16iodev */
2. Makefile文件修改
LIB_EXTRA 中添加相应.a文件