MC9S12XET256之Libmaker
来源:互联网 发布:百度人工智能开发文档 编辑:程序博客网 时间:2024/05/18 03:27
飞思卡尔提供的9S12系列单片机开发工具包 CodeWarrior Development Studio中包含一个非常有用的工具 libmaker, 可以将编译后的 obj 文件打包为库文件。还可以对现有的库文件进行一些基本的修改。这东东有什么用呢,首先,将一系列的 obj 文件打包为库文件后会提高最后的 Link 阶段的速度。还可以将自己一些不愿公开的代码打包为库文件,有助于知识产权的保护。
不说废话了,还是以一系列的例子来说明问题。首先假设我们的项目中有三个源文件。分别如下:
- /*add1.c*/
- char add1(char a){ return a + 1;}
- /*add2.c*/
- char add2(char a){ return a + 2;}
- /*add3.c*/
- char add1(char a){ return a + 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(char a);
- char add2(char a);
- char add3(char a);
- void main(void)
- {
- unsigned int data;
- 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(); /* feeds the dog */
- } /* loop forever */
- }
上面代码中加了些串口操作是为了防止编译器自作聪明的把我的代码优化掉。然后将 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。
- MC9S12XET256之Libmaker
- MC9S12XET256之EETS4K
- MC9S12XET256之ECT模块(1)
- MC9S12XET256之ECT模块(2)
- MC9S12XET256之ECT模块(3)
- MC9S12XET256之ECT模块(4)
- MC9S12XET256之ECT模块(5)
- MC9S12XET256之ECT模块(6)
- Freescale 9S12 系列单片机应用笔记(libmaker)
- 復之之理
- 博学之,审问之,慎思之,明辨之,笃行之
- 博学之,审问之,慎思之,明辨之,笃行之
- 雪,之韵,之恋,之......
- 年终总结之天涯之无敌之言论
- 万源之源之drupal 之 drupal_flush_all_caches
- 编程之美------之数字之魅
- 之记录员
- 孔乙己之
- Linux下检测进程是否存在
- reboot and select proper boot device r Insert boot Media in selected boot device and press a key解决方法
- HDTV(1920x1080)码率和视频质量关系的研究 2 (实验结果)
- AndroidStudio国内如何离线升级?
- 插入排序
- MC9S12XET256之Libmaker
- redmine配置git
- 数组的最大子数组和 Maximum Subarray
- 程序员人生00
- ORACLE EBS常用表
- ios 如何获得系统时间和日期
- websocket实现android消息推送
- getchar输入加速
- 关于Oracle11g的了解——事务