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文件。
|
|