mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Linker Skript aus Source Code heraus wählen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Projekt, für welches ich in Abhängigkeit von bestimmten 
Einstellungen im Source Code zwei verschiedene Linker Skripte verwende.

Im Source Code habe ich z.B. #define A bzw. #define B. Dementsprechend 
werden dann verschiedene Codeteile verwendet und daraus folgend muss ich 
verschiedene Linker Skripts verwenden.

Aktuell mache ich dieses von Hand. Ist es möglich, das Linker File auf 
Basis der oben genannten #define automatisch zu wählen?
Oder ist es eventuell möglich innerhalb eines Linker Files auch 
entsprechende Unterscheidungen zu treffen auf Basis der Angaben im 
Source Code?

Als IDE verwende ich das NXP S32 Design Studio, falls das wichtig ist.

Danke.

Gruß
Peter

Autor: Torsten R. (Firma: robitzki.de) (torstenrobitzki)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:

> ich habe ein Projekt, für welches ich in Abhängigkeit von bestimmten
> Einstellungen im Source Code zwei verschiedene Linker Skripte verwende.

Ich würde das durch den Build steuern. Ich kenne jetzt die Möglichkeiten 
Deiner IDE nicht, aber im Endeffekt würde ich zwei unterschiedliche 
Build-Typen/Varianten anlegen und dem entsprechend A und / oder B für 
den Compiler definieren und den Aufruf des Linkers unterschiedlich 
gestalten.

In einigen meiner Projekte mache ich es auch so, dass ich das 
Linker-Script erst während des Builds erstelle.

Autor: Bauform B. (bauformb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Im Source Code habe ich z.B. #define A bzw. #define B. Dementsprechend
> werden dann verschiedene Codeteile verwendet und daraus folgend muss ich
> verschiedene Linker Skripts verwenden.

Könnte man nicht beide Varianten in ein Script schreiben und 
verschiedene Namen verwenden? Also z.B. top_of_stack_A und 
top_of_stack_B? Der unbenutzte Teil dürfte doch einfach ignoriert 
werden.

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Peter schrieb:
> ich habe ein Projekt, für welches ich in Abhängigkeit von bestimmten
> Einstellungen im Source Code zwei verschiedene Linker Skripte verwende.

"Einstellungen im Source Code" - das ist der Fehler. 
Konfigurationsmanagement gehört nach außerhalb des Sourcecodes. Die 
Information, welche Konfiguration gerade compiliert wird, kann man dem 
Sourcecode dann ja per Makrodefinition mitteilen (-D 
Kommandozeilenoption des Compilers).

> Als IDE verwende ich das NXP S32 Design Studio

Ich habe noch keine IDE gesehen, die nicht schon von Haus aus 
Konfigurationen für "Debug" und "Release" vorgesehen hätte. Die meisten 
erlauben es, eine beliebige Anzahl weiterer Konfigurationen anzulegen. 
Und dann kann man für jede Konfiguration an allen möglichen Parametern 
drehen. Ob da das Linkerskript dabei ist, mußt du selber nachsehen.

Wenn alle Stricke reißen, kann man vielleicht auch das Linkerskript 
selber so (um)schreiben, daß es Bedingungen prüft. Google nach "linker 
script conditionals" bringt ein paar Ideen. Inklusive der Option, das 
Linkerskript durch den C Präprozessor zu jagen.

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.

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