cheng_bingyuan 发表于 2013-06-26 10:41

已解决 关于静态库调用顺序问题

本帖最后由 cheng_bingyuan 于 2013-07-06 10:57 编辑


============
版本一(成功)
============
(1)LIBS= stm32lib/CMSIS/DeviceSupport/libDeviceSupport.a
(2)LIBS+= stm32lib/STM32F10x_StdPeriph_Driver/src/libstm32_StdPeriph.a

LD = arm-none-eabi-gcc
LDFLAGS = -Wl,--gc-sections,-Map=$@.map,-cref,-u,Reset_Handler-T stm32f10x_flash_extsram.ld

MAIN_OUT = main
MAIN_OUT_ELF = $(MAIN_OUT).elf

all:                 $(obj)$(MAIN_OUT_ELF)

$(obj)$(MAIN_OUT_ELF):main.o stm32f10x_it.o $(LIBS)
        $(LD) $(LDFLAGS) main.o stm32f10x_it.o$(LIBS)--output $@

============
版本二(失败)
============

版本二我调整了版本一中(1)和(2)两个链接库的位置就会报下面的错误,然后我加上--start-group和--end-group还是不起作用,网上查的是--start-group和--end-group可以解决调用顺序问题,不知道这里为什么不起作用,谢谢。

/home/abing/Downloads/GProj/stm32lib/CMSIS/DeviceSupport/system_stm32f10x.c:225: undefined reference to `fsmc_Init'

(2)LIBS+= stm32lib/STM32F10x_StdPeriph_Driver/src/libstm32_StdPeriph.a
(1)LIBS= stm32lib/CMSIS/DeviceSupport/libDeviceSupport.a

LD = arm-none-eabi-gcc
LDFLAGS = -Wl,--gc-sections,-Map=$@.map,-cref,-u,Reset_Handler-T stm32f10x_flash_extsram.ld

MAIN_OUT = main
MAIN_OUT_ELF = $(MAIN_OUT).elf

all:                 $(obj)$(MAIN_OUT_ELF)

$(obj)$(MAIN_OUT_ELF):main.o stm32f10x_it.o $(LIBS)
        $(LD) $(LDFLAGS) main.o stm32f10x_it.o --start-group $(LIBS) --end-group --output $@

解决方法:加上-Wl,即$(LD) $(LDFLAGS) main.o stm32f10x_it.o -Wl,--start-group $(LIBS) --end-group --output $@
页: [1]
查看完整版本: 已解决 关于静态库调用顺序问题