最近项目需要将源文件编译成库文件,然后跑在Cortex-M0芯片上,遇到了一些问题需要记录一下。
编译环境:交叉编译环境 gcc-arm-none-eabi-5_4-2016q3-20160926-win32
先整理完整的源文件,封装好接口在头文件中
编译方法:
Makefile :
GCC_ARM_PATH :=D:\bat\gcc-arm-none-eabi-5_4-2016q3-20160926-win32
CROSS_COMPILE := $(GCC_ARM_PATH)\bin\arm-none-eabi-
sbcenc.o: sbc.h sbcenc.c
$(CROSS_COMPILE)gcc -c *.c *.h -mthumb -mcpu=cortex-m0
$(CROSS_COMPILE)gcc-ar -rcs libsbcenc.a *.o
clean:
del /Q /S .\*.o
del /Q /S .\*.a
del /Q /S .\*.gch
这样就能把源码编译成lib前缀的.a文件
注意:在整个工程的makefile 文件中要指明库路径及包含:
LIBFILES := -lm -I${INC} -lc
LIBDIR := -L.
LIBDIR += -L $(GCC_ARM_PATH)\lib\gcc\arm-none-eabi\5.4.1\armv6-m
LIBDIR += -L $(GCC_ARM_PATH)\arm-none-eabi\lib\armv6-m
LIBDIR += -L $(THUMB_PATH)
LIBDIR += -L $(SDK_ROOT)\drivers\sbc -lsbcenc