avr gcc update von 9.3.0-1 => 10.1.0.1 Linker Error

Gast #6285117
Lesenswert?

Hallo,

erst einmal die Info: Nutze ich avr-gcc-9.3.0-1 wird alles korrekt 
gebaut dh. am Code liegt es nicht. (oder doch? :))

Seit dem Update von avr-gcc gibt mir mein Linker immer die Fehlermeldung

/usr/bin/avr-ld: obj/Release/_gemeinsam/AT42QT2160.o:(.bss+0x29): 
multiple definition of `rx_data'; 
obj/Release/_gemeinsam/AMG88.o:(.bss+0x11): first defined here

Diese Meldung kommt für diverse Variablen. Ich habe es nicht geprüft, 
aber ich denke für alle vorhandenen Variablen.

Ich nutze Code Bocks unter Arch Linux
Linker Optionen:
-Wl,-Map=$(TARGET_OUTPUT_DIR)$(TARGET_OUTPUT_BASENAME).map,--cref

avr-gcc-10.1.0-1
gcc-10.1.0-2
gcc-libs-10.1.0-2

Freue mich über jegliche Hinweise oder Bug Reports die ich nicht finde, 
leider.
Beitrag #6285142 wurde von einem Moderator gelöscht.
Gast #6286225
Lesenswert?

Yalu X. schrieb:
> -fcommon ist nur der Work-Around. Besser wäre es, die doppelte
> definition von rx_data zu vermeiden.

Ist mir bewusst, aber um gestern weiter zu kommen wars für mich wichtig 
erstmal so zu leben... :)


Aber wie löse ich das korrekt?
Am Beispiel von rx_data:

Diese ist in can.h definiert:
volatile uint8_t rx_data[8];

Und wird verwendet in
can.c
main.c
AMG88.c
AT42QT2160.c

sprich ich includiere can.h in
main.h
AMG88.h
AT42QT2160.h

Wie würde ich das korrekt machen?
Beitrag #7410635 wurde von einem Moderator gelöscht.
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.