Forum: Compiler & IDEs arm-elf gcc selbst kompilieren


von blan (Gast)


Lesenswert?

hi,

ich benutze Ubuntu und bekomm gcc einfach nicht für das target=arm-elf 
kompiliert. ich bekomme immer folgende fehlermeldung:
1
          -c ../.././gcc/crtstuff.c -DCRT_BEGIN \
2
          -o crtbegin.o
3
exec: 2: -o: not found
4
make[4]: *** [crtbegin.o] Fehler 1

den gdb konnte ich ohne probleme kompileren und installieren. auch 
bekomm ich folgende fehlermeldung bei den binutils-2.9:
1
*** BFD does not support target arm-*-none.
2
*** Look in bfd/config.bfd for supported targets.

was kann ich da machen. ich hab das mit den configure-optionen aus einen 
artikel hier gemacht.

was kann ich da tun - jemand eine idee?

mfg blan

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Gehst du nach einer Anleitung vor und wenn ja, welcher?

Ich habe kurz gesucht und eine Anelitung von Adam Pierce gefunden:
http://www.doctort.org/adam/nerd-notes/getting-started-with-the-olimex-sam7-p256.html

basierend auf einer Anleitung vin Martin Hinner:
http://martin.hinner.info/ARM-Microcontroller-HOWTO/ARM-Microcontroller-HOWTO-4.html

von blan (Gast)


Lesenswert?

danke für die schnelle antwort!

ich hab mich an die configure-options von hier gehalten: 
http://www.mikrocontroller.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X

ich werde die links von dir mal durchgehen und schaun was dabei 
rauskommt - danke!

mfg blan

von B. L. (blan)


Lesenswert?

hi, also scheinbar klappt das tutorial - gcc konnte bei mir erfolgreich 
kompiliert werden. danke!

ich hab da allerdings noch eine frage: was ist dieser t-arm-elf patch?
hier wird er auch benutzt: 
http://www.mikrocontroller.net/articles/ARM_GCC_toolchain_for_Linux_and_Mac_OS_X
und hier kann man ihn runterladen: http://www.gnuarm.com/t-arm-elf

was bewirkt der patch und warum benötigt man den laut dem tutorial hier 
im artikelbereich?

mfg blan

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Oh, da erwischst du mich kaltr, weil ich davon keine Ahnung habe.

Der Patch hat auf jeden Fall mit der Configure Option --enable-multilib 
zu tun. Man kann die Toolchain so übersetzen, dass verschiedene 
Varianten der Library erzegt werden. Beispielsweise je eine Variante für 
Little Endian/Big Endian oder mit/ohne Hardware Multiplikator... Der 
Patch bzw. das angepasste t-arm-elf könnte den Configure Prozess in die 
gewünschte, ARM-taugliche Richtung beeinflussen.

Mehr zu Multilib kann man hier nachlesen:
http://www.airs.com/ian/configure/configure_8.html

von B. L. (blan)


Lesenswert?

hi,
ich bin mal wieder dabei gcc-arm und binutils-arm selbst zu kompilieren 
und soweit klappt das auch. ich kann damit kompilieren, linken usw..

allerings stelle ich grad fest, dass keine include-dateien à la 
stdlib.h, string.h erstellt werden. wenn ich jetzt also die stdlib.h 
einbinde kommt ein fehler. warum werden die nicht erstellt und wie kann 
ich das ändern?

danke,
blan

von Tilo (Gast)


Lesenswert?

Du hast newlib installiert?
Der Compiler selbst bringt afaik nichts in dieser Richtung mit.

von B. L. (blan)


Lesenswert?

nein habe ich nicht - irgendwie ist mir die newlib suspekt :)
sowas wie string-manipulation usw. geht dann also nur mit der newlib - 
weil ich zB bei dem mp3-player projekt string.h, assert.h includes 
gesehen habe?

danke,
blan

von Tilo (Gast)


Lesenswert?

http://sourceware.org/newlib/
Dort findest du unter Doku die Antwort auf deine Fragen.
string.h gehört zur newlib. Es gibt aber auch andere Implementationen 
der Standardfunktionen.

Bis dann,

von B. L. (blan)


Lesenswert?

okay, danke für die antworten. ich hab mir mal die funktionen angeschaut 
und da sind alle wichtigen dabei aber was ich nicht verstehe: wozu die 
funktionen fopen, fclose, ... dabei sind. was bringt mir solch eine 
funktion wenn ich nichtmal ein dateisystem habe?
wie kann ich die funktion zB für mein eigens implementieres fat32 
dateisystem verwenden? oder wozu sind die da?

danke,
blan

von Tilo (Gast)


Lesenswert?

Ich durfte mich in das Thema die letzen Wochen ein wenig einarbeiten.

Ich denke, das ist so ähnlich wie z.B. bei printf.
Zu den Standardfunktionen gibt es so etwas wie einen Treiber, den man 
selbst passend zur verwendeten Hardware schreiben muss.

Damit der Befehl printf funktioniert, muss erst das passende 
Ausgabedevice "eingebaut" werden, z.B. ein Uart.

Der Vorteil ist, dass die oberen Programmschichten immer gleich sind, 
egal wie die Hardware drunter aussieht.

von Bingo (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.