从xc32 2.10迁移到2.15时链接器错误

问题描述 投票:1回答:1

由于我无法追踪的原因,2.10和2.15之间的链接器似乎存在一些实质性差异。在用“extern”修复了一些多个定义之后,我已经到了令我感到困惑的地步。我有与2.10一起使用的功能代码,但2.15有一些矢量冲突。

/Applications/microchip/xc32/v2.15/bin/xc32-gcc -mprocessor=32MZ2048EFH144 -DXPRJ_default=default -legacy-libc -Wl,--defsym=_min_heap_size=65536,--no-code-in-dinit,--no-dinit-in-serial-mem -o bin/serial-r312-flash.elf obj/flash_interrupts.o obj/flash_main.o         
obj/main.o: In function `__vector_dispatch_24':
main.c:(.vector_24+0x0): multiple definition of `__vector_dispatch_24'
obj/flash_interrupts.o:interrupts.c:(.vector_24+0x0): first defined here
obj/flash_main.o: In function `__vector_dispatch_9':
main.c:(.vector_9+0x0): multiple definition of `__vector_dispatch_9'
obj/flash_interrupts.o:interrupts.c:(.vector_9+0x0): first defined here
/Applications/microchip/xc32/v2.15/bin/bin/gcc/pic32mx/4.8.3/../../../../bin/pic32m-ld: Link terminated due to previous error(s).
collect2: error: ld returned 255 exit status
make: *** [flash] Error 255

我试图制作载体外部,但这至少没有帮助。

//interrupt.h
extern void __attribute__((vector(_TIMER_2_VECTOR), interrupt(ipl7AUTO), nomips16))SampleTimerHandler(void);

//interrupt.c
void __attribute__((vector(_TIMER_2_VECTOR), interrupt(ipl7AUTO), nomips16)){}

在main.c中,我基本上有一个循环。

任何建议将不胜感激。

pic microchip
1个回答
1
投票

尝试定义您的ISR:

void __ISR(_USB_VECTOR, IPL1SOFT) USB_ISR() {

用-Wall建立清洁。另外,我相信nomips16是新的默认值。

编辑:另外,请参阅评论。显然,尝试在头文件中重新声明ISR是一个促成因素。

© www.soinside.com 2019 - 2024. All rights reserved.