Freescale 9S12 系列單片機應(yīng)用筆記(libmaker)
不說廢話了,還是以一系列的例子來說明問題。首先假設(shè)我們的項目中有三個源文件。分別如下:
- /*add1.c*/
- charadd1(chara){returna+1;}
- /*add2.c*/
- charadd2(chara){returna+2;}
- /*add3.c*/
- charadd1(chara){returna+3;}
這3個文件真是沒個性,不過對于說明問題已經(jīng)夠用了。
編譯后會形成三個 Object 文件:add1.c.o add2.c.o add3.c.o
然后可以利用 libmaker 將這三個 object 文件打包為庫文件了。這里需要些命令行操作,不熟悉的可以找些 win 批處理文件的教程看看。
首先,在 .o 文件所在目錄建個 a.bat 的批處理文件。里面加入兩行代碼:
set PATH="D:Program FilesFreescaleCWS12v5.1Prog";%PATH%cmd /k
如果你的CWS12安裝在不同的目錄,請做相應(yīng)的修改。然后雙擊 a.bat 文件,會打開一個命令行窗口,并且設(shè)置好環(huán)境變量。
執(zhí)行下面的命令:
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)
執(zhí)行的結(jié)果是相同的,都是產(chǎn)生 add.lib 文件。好了,庫文件已經(jīng)生成了??梢詼y試了。在 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*/
- }
上面代碼中加了些串口操作是為了防止編譯器自作聰明的把我的代碼優(yōu)化掉。然后將 add.lib 加入到項目中,編譯。一切OK!
Libmaker 還有些其他的功能,下面給一些簡單的例子。
將一個obj 文件添加到現(xiàn)有庫文件中,語法如下:
Libmaker -Cmd(add.lib + add4.c.o = add.lib)
將一個 obj 文件移出 庫文件:
Libmaker -Cmd(add.lib - add1.c.o = add.lib)
知道這些就夠一般的應(yīng)用了。如果還需要了解更多,請參看 Build Tools Utilities Manual。
評論