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


von Peter (Gast)


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

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


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.

von Bauform B. (bauformb)


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.

von Axel S. (a-za-z0-9)


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.

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.