GCC Library Suchpfad?

OP #3092872
Lesenswert?
• ▲
▼
Hallo,

ich habe erst vor kurzem einmal den ARM none eabi GCC runtergeladen von 
hier:

https://launchpad.net/gcc-arm-embedded/+download

Ich benutze Linux, daher habe ich das entsprechende .tar.bz2 genommen 
und entpackt (nach opt). Die Toolchain funktioniert bestens; man kann 
sogar ein Makefile von den Yagarto-Examples nehmen, und das Projekt wird 
erfolgreich und fehlerfrei compiliert.

Nun habe ich dazu Frage 1:
Wenn man printf() benutzt - wo geht der Output dann hin? Kriege ich 
irgendwo einen Callback oder sowas?


Dann Frage 2: Nun möchte ich noch was mit einem Blackfin programmieren. 
Ich habe ein fertiges Board, wo uCLinux drauf läuft. Als SDK zu dem 
Board kriegt man ein Image, das man in VirtualBox auf dem PC einbiden 
kann, wo ein Linux gebootet wird und die Toolchain bereits eingerichtet 
ist. Da ich nun aber schon normalerweise auf Linux arbeite, wäre es 
schön, wenn ich mir die VM ersparen könnte. Kurz und gut also: ich lade 
mir die bfin-uclinux-gcc Toolchain herunter (.tar.bz2 wie gehabt) und 
entpacke sie nach opt. Leider scheint bei dem GCC die C-Library nicht 
dabei zu sein: ein Hello world lässt sich nicht compilieren mit 
bfin-uclinuc-gcc, mit arm-none-eabi-gcc geht es aber! Die Frage ist: wo 
muss ich die Blackfin C-Library ablegen, damit der bfin-gcc diese 
findet? Interessanterweise musste ich bei der arm-none-eabi Toolchain 
überhaupt nichts einrichten, das hat 'out of the box' funktioniert, 
müsste bei Blackfin also auch möglich sein.

Gruss
Moderator Persönliche Seite #3093003
Lesenswert?
• ▲
▼
Tobias Plüss schrieb:

> Wenn man printf() benutzt - wo geht der Output dann hin?

Das hängt von der mitgelieferten C-Bibliothek ab.  Ich geh' mal davon
aus, dass es sich um eine newlib handelt.  Diese implementiert das
Unix-Modell, sodass du die zugehörigen Unix-Syscalls selbst in deiner
Applikation liefern musst.  Das ist für printf() in erster Linie ein
write(), aber vermutlich wird stdio für die Pufferung der Daten
außerdem mindestens noch eine Implementierung von sbrk() benötigen.
Dies fordert eine Vergrößerung des Datensegments an (normalerweise
vom Betriebssystem, aber du musst hier halt so tun als ob) und stellt
die Basis für malloc() dar.

Beispiele dafür solltest du im Netz finden.

> Die Frage ist: wo
> muss ich die Blackfin C-Library ablegen, damit der bfin-gcc diese
> findet? Interessanterweise musste ich bei der arm-none-eabi Toolchain
> überhaupt nichts einrichten, das hat 'out of the box' funktioniert,

Der Bibliothekspfad wird normalerweise beim Aufruf des ./configure
beim Compilieren des GCC abgeleitet aus dem dort angegebenen
Installationspräfix.

Wenn du den Compiler mal mit -v aufrufst, dann zeigt er dir die
einzelnen Backend-Aufrufe einschließlich der benutzten Pfade.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.