Ist es möglich, dass ein Linker-Skript auf Makefile / Shell-Variablen zugreift und eine Entscheidung basierend auf der genannten Variable trifft?
Angenommen, ich möchte den Start des RAM-Bereichs ändern, ohne ein anderes Linker-Skript zu verwenden, wäre es dann möglich, eine make-Variable zu verwenden?
%Vor%ld importiert keine Variablen aus der Umgebung, sodass sie nicht direkt verwendet werden können. Der beste Weg dazu ist, ein eigenes Linker-Skript mit den zu exportierenden Umgebungsvariablen zu erstellen, und das originale Linker-Skript enthält es so:
Makefile:
%Vor%enviroment_linker_script:
%Vor%master_linker_script:
%Vor%Ich bezweifle es, obwohl es von dem Linker abhängen würde, den Sie verwenden. Es könnte für den Linker möglich sein, einige exportierte Variablen von make zu lesen, aber wie gesagt, dies hängt von der spezifischen Linker-Funktionalität ab. Eine andere Idee könnte so lange sein, wie die Linker-Datei nicht zu kompliziert ist. Eine Möglichkeit wäre, sie mit Ihrem Makefile zu generieren. Es gibt viele Beispiele, nach denen Sie googeln können, wenn Makefiles Header-Dateien generieren. Sie können dem gleichen Pfad folgen, um eine Linker-Datei zu generieren.
Wenn die Lösung darin besteht, innerhalb des Makefiles zu entscheiden, welches von mehreren Linker-Skripten nicht ausreicht, dann könnte das Erzeugen des Skripts innerhalb von make eine praktikable Option sein.
Diese Lösung basiert auf den wörtlichen Variablen von GNU make, die in Umgebungsvariablen exportiert und mit $$ referenziert werden. Ich benutze dies für die Definition einer Pfadvariablen, die verwendet werden soll, um ein Linker-Skript in ein anderes Linker-Skript wie folgt aufzunehmen:
%Vor%Erläuterung: Dies ist ein Teil des Makefiles und funktioniert nur, wenn die Makefiles $ (LDSCRIPT) als Voraussetzung in allen relevanten Regeln verwenden.