Toon posts:

compileren met linux

Pagina: 1
Acties:

  • naj555
  • Registratie: oktober 2010
  • Laatst online: 30-10-2010
Hallo allemaal,

Al een hele tijd probeer ik bestanden te compileren voor ARM7 processoren. De nieuwste versie van codesourcery (C compiler) heb ik gedownload en krijg steeds een foutmelding over de linker.

code:
1
2
3
4
5
arm-none-eabi-ld -v -Map blink.map -Tram-ln.cmd -o blink.elf crt.o blink.o
GNU ld (Sourcery G++ Lite 2010q1-188) 2.19.51.20090709
blink.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
blink.o:(.ARM.exidx+0x8): undefined reference to `__aeabi_unwind_cpp_pr1'
make: *** [blink.elf] Error 1


Hoewel ik denk dat het aan de compiler ligt post ik toch de makefile:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Makefile for Adam's LED blink example



# Our tools.


CC      = arm-none-eabi-gcc
LD      = arm-none-eabi-ld
AS      = arm-none-eabi-as
CP      = arm-none-eabi-objcopy

# Commandline options for each tool.
CFLAGS  = -I./ -c -fno-common -O0 -g
AFLAGS  = -ahls -mapcs-32 -o crt.o
LFLAGS  = -v -Map blink.map -Tram-ln.cmd
CPFLAGS = --output-target=ihex

# Our target.
all: blink.hex

clean:
    rm -f *.o *.hex *.elf *.map *.lst core *~

# Convert ELF binary to Intel HEX file.
blink.hex: blink.elf
    $(CP) $(CPFLAGS) blink.elf blink.hex

# Link - this produces an ELF binary.
blink.elf: blink.o crt.o
    $(LD) $(LFLAGS) -o blink.elf crt.o blink.o

# Compile the C runtime.
crt.o: ram-crt.s
    $(AS) $(AFLAGS) ram-crt.s > crt.lst

# Compile the main program.
blink.o: blink.c
    $(CC) $(CFLAGS) -c blink.c


Wie o wie kan mij helpen

mvg Jan Bot

  • Sprite_tm
  • Registratie: september 2002
  • Laatst online: 15-09 13:52

Sprite_tm

Semi-Chinees

Misschien linken met -lgcc erbij? Rare symbols willen daar nog wel es instaan.

Relaxen und watchen das blinkenlichten. | Laatste project: Ikea Frekvens oog


  • H!GHGuY
  • Registratie: december 2002
  • Niet online

H!GHGuY

Try and take over the world...

Je probleem heeft, voor zover ik kan zien, met exception handling te maken.
Er zal wel een lib zijn (libgcc of libstdc++) waar dit in zit.

ASSUME makes an ASS out of U and ME


  • naj555
  • Registratie: oktober 2010
  • Laatst online: 30-10-2010
Sprite_tm schreef op vrijdag 29 oktober 2010 @ 19:55:
Misschien linken met -lgcc erbij? Rare symbols willen daar nog wel es instaan.
Bedankt voor je snelle reactie.

Ik heb daar naar gezocht maar lgcc word niet mee geleverd bij codesourcery.

Ik heb in mijn makefile even

code:
1
LD      = arm-none-eabi-ld


veranderd zoals een voorbeeld op internet in:

code:
1
LD      = arm-none-eabi-ld -v -lgcc


maar daar vraagt hij natuurlijk naar de lgcc executable, die ik niet heb.

libgcc zal ik dan waarschijnlijk nodig hebben. Maar daarover kan ik weinig vinden wat ook maar enige relatie heeft met mijn probleem.

Verder dan dat kom ik ook niet met mijn zeer beschijden linux kennis. Ik had stiekem gehoopt op een spelfoutje :P Wellicht kan iemand me in de goede richting sturen?

  • burne
  • Registratie: maart 2000
  • Niet online

burne

Mine! Waah!

naj555 schreef op vrijdag 29 oktober 2010 @ 22:49:
Ik had stiekem gehoopt op een spelfoutje :P Wellicht kan iemand me in de goede richting sturen?
Mijn eerste idee was een tikfoutje in je makefile:

blink.o:(.ARM.exidx+0x0): undefined reference to [red]'[/red]__aeabi_unwind_cpp_pr0[red]'[/red]
blink.o:(.ARM.exidx+0x0): undefined reference to [red]'[/red]__aeabi_unwind_cpp_pr1[red]'[/red]


Ik zou een ' aan het einde van die regel verwachten (aangegeven in rood).

I don't like facts. They have a liberal bias.


  • naj555
  • Registratie: oktober 2010
  • Laatst online: 30-10-2010
Oops, verkeerd overgenomen!

Daar heb je gelijk in.

  • leuk_he
  • Registratie: augustus 2000
  • Laatst online: 21-09 12:08

leuk_he

1. Controleer de kabel!

naj555 schreef op vrijdag 29 oktober 2010 @ 22:49:
Ik heb daar naar gezocht maar lgcc word niet mee geleverd bij codesourcery.
libgcc.a wordt dacht ik wel geleverd.

Ook valt te denken dat hij de verkeerde linker gebruikt te cross-compileren? kijk eens of je in de gegeneerde blink.map (met text editor bekijken) ziet of hij ergens een verkeerde library lijkt te gebruiken ofzo, uit een niet code-sourcery path.

Hij struikeld over wat floating point code. Heb je je programma al eens teruggebracht tot een main (){} en gekeken of je kunt uitvinden welk statement dit genereerd.

Je kunt uiteraard als vieze workarround deze unwind procedures zelf toevogen als dummy procedures. ze worden denk ik pas daadwerkelijk aangeroepen als je een flouting point exception hebt (delen door 0 enzo)

zoiets:

https://www.codeblog.org/...bi/aeabi_unwind_cpp_pr1.c

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


  • naj555
  • Registratie: oktober 2010
  • Laatst online: 30-10-2010
Het werkt. Van harte bedankt!

Het probleem was inderdaad iets in de main.c

"werkende" voorbeelden moet dus ook nooit vertrouwen.
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee