mikrocontroller.net

Forum: Compiler & IDEs libbfd.a und debuggen


Autor: Markus Altmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Markus Altmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.