飞思卡尔供给的9S12系列单片机开发东西包 CodeWarrior Development Studio中包括一个十分有用的东西 libmaker, 能够将编译后的 obj 文件打包为库文件。还能够对现有的库文件进行一些根本的修正。这东东有什么用呢,首要,将一系列的 obj 文件打包为库文件后会进步最终的 Link 阶段的速度。还能够将自己一些不肯奇怪的代码打包为库文件,有助于知识产权的维护。
不说废话了,还是以一系列的比如来阐明问题。首要假定咱们的项目中有三个源文件。别离如下:
- /*add1.c*/
- charadd1(chara){returna+1;}
- /*add2.c*/
- charadd2(chara){returna+2;}
- /*add3.c*/
- charadd1(chara){returna+3;}
这3个文件真是没特性,不过关于阐明问题现已够用了。
编译后会构成三个 Object 文件:add1.c.o add2.c.o add3.c.o
然后能够使用 libmaker 将这三个 object 文件打包为库文件了。这儿需求些指令行操作,不熟悉的能够找些 win 批处理文件的教程看看。
首要,在 .o 文件地点目录建个 a.bat 的批处理文件。晒干参加两行代码:
set PATH=”D:\Program Files\Freescale\CWS12v5.1\Prog”;%PATH%cmd /k
假如你的CWS12安装在不同的目录,请做相应的修正。然后双击 a.bat 文件,会打开一个指令行窗口,而且设置好环境变量。
碑文下面的指令:
Libmaker -Cmd( add1.c.o + add2.c.o + add3.c.o = add.lib)
上面指令的 + 号能够省掉,写为:
Libmaker -Cmd( add1.c.o add2.c.o add3.c.o = add.lib)
碑文的结果是相同的,都是发生 add.lib 文件。好了,库文件现已生成了。能够测试了。在 main.c 中加几行:
- add1(chara);
- charadd2(chara);
- charadd3(chara);
- voidmain(void)
- {
- unsignedintdata;
- SCIInit();
- SCISetBaudRate(SCI0,9600,8192000L);
- EnableInterrupts;
- data=1;
- data=add1(data);SCIPutChar(SCI0,data);
- data=add2(data);SCIPutChar(SCI0,data);
- data=add3(data);SCIPutChar(SCI0,data);
- for(;;)
- {
- _FEED_COP();/*feedsthedog*/
- }/*loopforever*/
- }
上面代码中加了些串口操作是为了避免编译器自作聪明的把我的代码优化掉。然后将 add.lib 参加到项目中,编译。全部OK!
Libmaker 还有些其他的功用,下面给一些简略的比如。
将一个obj 文件添加到现有库文件中,语法如下:
Libmaker -Cmd(add.lib + add4.c.o = add.lib)
将一个 obj 文件移出 库文件:
Libmaker -Cmd(add.lib – add1.c.o = add.lib)
知道这些就够一般的应用了。假如还需求了解更多,请参看 Build Tools Utilities Manual。