| 本帖最后由 xuyiyi 于 2010-9-11 06:09 编辑 
 在ICC AVR里 icc\libsrc.avr\libsrc有很多库函数的源程序, 你可参考一下。
 
 ICC俺没用过,这是网上找来的方法,供参考。
 
 ICC AVR自制库文件
 
 步骤1: 库文件的生成
 为叙述方便,请在C盘根目录中新建一目录,并将其命名为libtest。以下将C:\libtest简称为工作目录。
 
 在ICCAVR IDE环境中新建两个文件,分别命名为GetMax.c和GetMax.h,并保存至工作目录中。两文件内容如下所示:
 
 **********************************
 
 //------GetMax.h的内容如下:------
 #ifndef __GETMAX_LIB
 
 #define __GETMAX_LIB
 
 extern int GetMax( int a, int b );
 
 #endif
 
 **********************************
 
 //------GetMax.c的内容如下:------
 #include "GetMax.h"
 
 int GetMax( int a, int b )
 {
 return ( (a > b)?a:b );
 }
 
 **********************************
 
 执行File菜单下的Compile File...项下的To Object项,将GetMax.c编译生成相应的目标文件GetMax.o 。
 
 执行命令ilibw -a libGetMax.a GetMax.o生成库文件。可执行文件ilibw.exe位于icc安装完后的系统目录(默认安装时在C:\icc)的子目录bin中。为使用方便可将ilibw.exe拷贝至工作目录中使用。至此库文件libGetMax.a已生成,其对应的头文件为GetMax.h 。
 
 注意库文件的命名必须以“lib”字样开头,否则在IDE中编译下面的应用范例过程中自动链接时会报错(手动链接除外)。
 
 ----------------------------------
 
 步骤2:应用范例的编写和编译
 在工作目录中建立一个工程Test.prj 。工程Test.prj中包含一个C源程序文件Test.c 。Test.C的源代码如下所示:
 
 **********************************
 //------Test.c的源代码如下:------
 
 #include "GetMax.h"
 void main( void )
 {
 int Result,Value1,Value2;
 Value1 = 0x10FF;
 Value2 = 0x0FFF;
 Result = GetMax( Value1, Value2);
 }
 
 **********************************
 
 然后,将前一步骤生成的库文件libGetMax.a拷贝至icc安装完后的系统目录(默认安装时在C:\icc)的子目录lib中。再执行Project菜单下的Option项,修改Target表单中的Additional Lib项,在文本框中输入GetMax (注意不能写成libGetMax.a)。
 
 完成上述步骤后,就以编译和调试test.prj 。
 
 如果在其它工程中需要使用上述库函数GetMax,只需拷贝所需的GetMax.h和libGetMax.a,并进行相应配置就可以了。
 
 也可以在已有的库中增加一些自定义的函数。详细参考ICCAVR IDE 中的在线帮助。
 |