Linker Skript aus Source Code heraus wählen

Gast #5998895
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
(Firma: Torrox.de) #5998904
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.
#5998945
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.
#5999014
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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.