Forum: Compiler & IDEs libbfd.a und debuggen


von Markus Altmann (Gast)


Lesenswert?

Hallo,
Im avr-libc-user-manual steht, dass AVaRice zur Installation die
Library libbfd.a benötigt.

Welches libbfd.a ist da gemeint?

Ich finde auf meinem Rechner mehrere libbfd.a vor:

*) eines das mit make von gdb entstanden ist und im build-Verzeichnis
desselben steht

*) eines das mit make der binutils entstanden ist und im
build-Verzeichnis desselben steht

*) eines unter /usr/lib/libbfd.a

wobei das letztere ein Uraltdatum besitzt (2003-09-23) und meiner
Meinung nach bei der Installation des Systems (SuSE 9.0) entstanden
ist.

Ich hab in einem Forum mal gelesen, dass libbfd.a abhängig von HOST und
TARGET sein soll?

Wenn das stimmt ist wohl das letzte libbfd.a das falsche da dieses ja
nichts von einem AVR wissen kann.

Anscheinend ist AVaRice nicht das einzige Programm in der Toolchain,
welches diese lib benötigt, sonst würde ja nicht beim make von z.B. gdb
ein solches in dessen build Verzeichnis entstehen!?

Welches libbfd.a habt Ihr bei der Installation von AVaRice verwendet
bzw. bei configure desselben angegeben?

Danke für die Hilfe
Markus

von Jörg Wunsch (Gast)


Lesenswert?

Ich habe für FreeBSD einen eigenständigen Port für eine libbfd.a
gemacht, der eine ,,vollständige'' Lib baut und installiert.

% ls -l /usr/local/lib/libbfd.a
-rw-r--r--  1 root  wheel  4236100 Dec 27 23:40
/usr/local/lib/libbfd.a

Die ist nicht ganz ohne, da sie ja praktisch jedes noch so verquere
Objektformat dieser Welt lesen und verarbeiten kann.

Laut Theodore Roth genügt es aber, die hostbezogene libbfd.a zu haben
(sofern der Host ELF als native object format benutzt), da nur die
Basisfunktionen zum Lesen einer ELF-Datei daraus genutzt werden.  Das
habe ich selbst nicht probiert, aber eigentlich sollte jede der drei
von dir genannten Bibliotheken dies tun können.  Da die binutils
standardmäßig nicht davon ausgehen, dass es eine installierte Version
davon gibt (obwohl dies auf Linuxen üblich zu sein scheint),
compiliert typischerweise jedes binutils-Projekt (GDB vs. generische
binutils) seine eigene Version und linkt statisch gegen diese.

von Markus Altmann (Gast)


Lesenswert?

@Jörg

Was meinst Du mit: "(GDB vs. generische binutils)" ?

Mich wundert da, dass es nicht zu Inkompatibilitäten kommt zwischen den
einzelnen libbfd-Versionen die da bei binutils und gdb mitgeliefert
werden.

Eine andere Frage:
Im avr-libc-user-manual-1.2.0 wird immer noch die gdb-Version 6.0
empfohlen. Wenn ich jetzt die neueste Version 6.3 verwende, gibt es da
bezüglich der Versionen für simulavr(xx) bzw. AVaRice Einschränkungen?

Gibt es vielleicht schon eine andere Versionskombinations-Empfehlung
der einzelnen Toolchain-Programme

lt. avr-libc-user-manual-1.2.0:
Binutils 2.14 - gcc 3.3.1 - libc 1.0 - gdb 6.0 - AVaRice 2.0

von Jörg Wunsch (Gast)


Lesenswert?

> Was meinst Du mit: "(GDB vs. generische binutils)" ?

Obwohl der GDB innerhalb der binutils compiliert wird, ist es ein
separates Projekt, sodass üblicherweise eine separate Compilation
benutzt wird (die aber einiges an Quellcode mit den Standard-binutils
gemeinsam nutzt).

Standard-binutils, das ist der Software-Teil, in dessen Rahmen der
Assembler, Linker, Archivar, nm, size etc. gebaut werden.

> Mich wundert da, dass es nicht zu Inkompatibilitäten kommt ...

Die sind doch allesamt statisch in die jeweiligen Tools gelinkt.
Damit kollidiert das nicht mit einer eventuell vorhandenen
systemweiten libbfd.a.  (Eine libbfd.so sollte man meiner Meinung nach
aber besser nicht haben, das wäre eine potenzielle Quelle für
Versionskonflikte.)

> Im avr-libc-user-manual-1.2.0 wird immer noch die gdb-Version 6.0
> empfohlen.

Oh, war mir gar nicht bewusst, dass da konkrete Versionsnummern drin
stehen.  Nö, es ist OK, die jeweils neuesten Releases der einzelnen
Tools zu nehmen.  Ohne jetzt nachzugucken wären das wohl:

. binutils 2.16
. gcc 3.4.2 (oder 3.4.3?)
. avr-libc 1.2.0
. gdb 6.3
. avarice 2.3 (hier musste ich wirklich nachgucken gehen)

Du kannst ja mal einen Bugreport einreichen, dass die Dokumentation
entweder häufiger angepasst werden sollte oder aber allgemeiner
gehalten.  (Ich denke, wir werden uns für letzteres entscheiden.)
Bitte nenne auch die Stelle(n), wo du das gefunden hast.

von Jörg Wunsch (Gast)


Lesenswert?

Ich habe die expliziten Versionsnummern aus der Doku soeben entfernt.
Die Empfehlung ist jetzt, die jeweil letzte freigegebene Version eines
jeden Tools zu nehmen.

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.