文章
博客 网店

 WinAVR编译库函数和项目中使用库函数


WinAVR项目中的makefile文件一般都是由mfile生成的,这里介绍一下如何配置mfile生成的makefile文件,用于编译生成库文件(.a文件)

 在makefile中找到下面的这一段:


# Change the build target to build a HEX file or a library.
 build: elf hex eep lss sym
 #build: lib


将build改为下面的lib


 # Change the build target to build a HEX file or a library.
 #build: elf hex eep lss sym
 build: lib


好了,编译后就生成 lib为前缀加项目名,并以.a为扩展名的库文件;

如果需要修改生成文件名,则需要修改下面这一段代码中的LIBNAME符号:

elf: $(TARGET).elf
 hex: $(TARGET).hex
 eep: $(TARGET).eep
 lss: $(TARGET).lss
 sym: $(TARGET).sym
 LIBNAME=lib$(TARGET).a
 lib: $(LIBNAME)

至此我得到了一个.a为扩展名的c函数库文件,那么如何在项目中使用此库呢?

在使用库函数的项目makefile中找到下面的脚本

#---------------- Linker Options ----------------
#  -Wl,...:     tell GCC to pass this to linker.
#    -Map:      create map file
#    --cref:    add cross reference to  map file
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += $(EXTMEMOPTS)
LDFLAGS += $(patsubst %,-L%,$(EXTRALIBDIRS))
LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)


在其后面加上 

LDFLAGS += lib1.a


lib1.a 就是要使用的库文件,注意前面要留一空格;另外,库文件复制到项目目录中;

做库文件同时通常需要为库做一个内部函数声明文件 .h
.h文件中列出了库文件中实现的函数,在使用库函数的源文件中要包含这个.h文件。



芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved