mikrocontroller.net

Forum: Compiler & IDEs GCC options --direct-data und -static


Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich versuch gerade nachzuvollziehen, was das AVR32 Studio beim 
build macht.

Einige Option hab ich im GCC Manual nicht gefunden:
Unter AVR32/GNU C Linker ist standardmäßig u.a. folgende option 
angeführt:

-Wl, --direct-data

Was tut diese Option? Sie korrespondiert offenbar mit einer anklickbaren 
Option "Allows direct references to the data section".

Kann es sein, dass das mit vorcompilierten Library aufrufen zu tun hat?

Ich kämpfe zur Zeit mit dem Problem beim Debuggen, das bestimmte 
Funktionsaufrufe von Beispielprojekten in den Sourcen garnicht findbar 
sind. Ich würde gerne allen Quellcode von den benutzten und vermutlich 
erst vom Linker evtl als vorcompilierte Dateien eingebundenen Librarys 
fürs Debugen vorhanden haben. Dazu müsste ich die Standardlibs alle 
raushauen mit -nostdlib, -nodefaultlibs, -nostartfiles etc, und dann 
stattdessen die Source-Dateien explizit angeben oder? Wie sagt man dann 
dem Linker/Compiler, das er auf vorcompiliertes Zeug verzichten soll?

Ferner hat evtl -static = "No shared libraries" etwas damit zutun. Was 
ist eine shared library?

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moritz E. wrote:

> Einige Option hab ich im GCC Manual nicht gefunden:
> Unter AVR32/GNU C Linker ist standardmäßig u.a. folgende option
> angeführt:
>
> -Wl, --direct-data

-Wl leitet die Option nur an den Linker weiter. Dokumentiert ist 
--direct-data also nicht in gcc, sondern in binutils, zB ld oder 
avr32-ld.

Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso, danke..

Und der unterschied zwischen static und shared?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moritz E. wrote:

> Was
> ist eine shared library?

Gugeln sollte dir da sicher helfen.  Kurz: eine Bibliothek, die
vorgelinkt ist und die zur Laufzeit in den VM-Adressraum der
Applikation reingemappt wird (mit mmap()).  Die Idee dahinter (daher
shared library) ist, dass mehrere Applikationen den Code gleichzeitig
nutzen können.

Wenn du von Windows kommst, kennst du sowas als DLL.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja.. static benutzt statische Libraries, shared eben stattdessen 
shared libs.

> Was ist eine shared library?

Eine, die erst beim Programmstart dynamisch ans Programm gelinkt wird.

Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann handelt es sich bei den standardlibs wohl um static libraries... 
und -static würde keinen untersched machen

zu "--direct-data" habe ich beim ld manual nichts gefunden, mit avr32-ld 
--help erfahre ich auch nicht mehr als "Allow direct data references 
when optimizing". Was ist unter "direct data reference" zu verstehen?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Google +avr32 +"direct-data", Link #2:
http://www.atmel.com/dyn/resources/prod_documents/...

Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok ich hab google nur mit +"--direct-data" gefüttert, und dann 
aufgegeben...

Autor: Tilo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum fehlendem Code beim Debuggen:

Das habe ich mit gnuarm und Eclipse auch, wenn Funktionen aus der Newlib 
verwendet werden. Ich habe mir dadurch geholfen, in dem ich den 
entsprechenden Quellcode aus den Source-Paketen hinzufügte.

Autor: Moritz E. (devmo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Newlib zeug hab ich bisher nur als objektfiles gefunden, wo hast du 
denn da sourcecode aufgetrieben?

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.