Forums Neueste Beiträge
 

[gcc] spec file gesucht

24/07/2010 - 13:44 von Markus Wichmann | Report spam
Hi all,

ich bràuchte mal eins von zwei Sachen:

Entweder eine Erklàrung der spec-File des gcc, inklusive dessen, was der
gcc dann letztendlich eigentlich ausführt, oder eine spec-File, die
folgendes leistet:

- Kein unter /usr liegendes Verzeichnis wird auch nur mit dem Hintern
angeguckt.
- Die System-include-Verzeichnisse sind /tools/include und
/tools/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include
- Die libc ist /tools/lib/libc.a
- /tools/lib ist standard-lib-Verzeichnis
- dynamic linking geht nicht.

Tschö,
Markus
 

Lesen sie die antworten

#1 Michael Schumacher
24/07/2010 - 20:00 | Warnen spam
Markus Wichmann wrote:

ich bràuchte mal eins von zwei Sachen:

Entweder eine Erklàrung der spec-File des gcc, inklusive dessen,
was der gcc dann letztendlich eigentlich ausführt, oder eine
spec-File, die folgendes leistet:

- Kein unter /usr liegendes Verzeichnis wird auch nur mit dem
Hintern angeguckt.
- Die System-include-Verzeichnisse sind /tools/include und
/tools/lib/gcc/x86_64-unknown-linux-gnu/4.5.0/include
- Die libc ist /tools/lib/libc.a
- /tools/lib ist standard-lib-Verzeichnis
- dynamic linking geht nicht.



Ich hab schon lange nicht mehr in die gcc-Quellen reingeschaut,
aber ich bin mir sicher, daß das spec-Format beschrieben wird,
und zwar entweder als Kommentar in "cccp.[ch]" (dem Steuerprogramm,
das dann spàter z.B. in "gcc" umbenannt wird), oder auch in den
texinfo-Quellen ("Using and Porting GNU CC"). Welche Specs der
jeweilige gcc verwendet, kann man über "gcc -dumpspecs" erfragen;
interessant sind auch die Optionen "-print-search-dirs" etc. (s.
"gcc --help"). Die spec-Regeln sind nicht sonderlich kompliziert,
werden aber aus unterschiedlichen Quellen (generierte Makefiles,
config-Dateien und <arch>.[ch]) zusammengesetzt -- ob's noch so
ist, weiß ich nicht, ich vermute es aber.

Wenn Du den gcc selbst generierst, bietet das configure-Skript
normalerweise hinreichende Flexibilitàt ("host"/"build"/"target",
"--exec-prefix" & Co.), um beliebig viele "gcc"s für beliebige
Architekturen parallel zu installieren, ohne, daß sie sich ins
Gehege kommen. Das spec-File làßt man am besten in Ruhe, weil
auch kleine Fehler darin ungeahnte und nur schwer zu entdeckende
Folgen haben können.

An Deiner Stelle würde ich einfach erstmal versuchen, mit der
Umgebungsvariablen "GCC_EXEC_PREFIX" zu spielen; die sollte
auf das Verzeichnis verweisen, in der das Steuerprogramm die
Compiler (cc1, cc1plus, ...) und den Startup-Code (crt*.o)
erwartet (N.B.: Slash am Verzeichnis-Ende nicht vergessen, also
z.B. 'export GCC_EXEC_PREFIX="/tools/lib/gcc/x86_64-unknown-\
linux-gnu/4.5.0/"'). Wenn ich mir die o.g. Pfade für Libs und
Includes ansehe, glaube ich, daß Dein Problem damit schon gelöst
ist -- natürlich wirst Du sicher ein Wrapper-Skript schreiben
und installieren wollen, das "GCC_EXEC_PREFIX" vor dem gcc-Aufruf
setzt.

Deine letzte Forderung, "dynamic linking geht nicht", làßt sich
damit allerdings nicht erfüllen, allerdings auch nicht wirklich
mit einem angepaßten spec-File: das ist ein Tool-Feature, das
von Compilern, Assemblern und Linkern bereitgestellt wird -- sie
unterstützen's entweder, oder sie tun's eben nicht. Das hàngt
nicht vom gcc-spec-File ab, sondern davon, ob diese Tools das für
die jeweilige Zielarchitektur erlauben, und wenn ja, ob das auch
beim "configure"/Build freigeschaltet wurde. Wenn Du das bereits
fertigen GNU-Tools, die es unterstützen, abgewöhnen willst, gibt
es mehrere Möglichkeiten, aber vielleicht reicht Dir ja schon das
Setzen von "GCC_EXEC_PREFIX". Wenn nicht: melden macht frei! :-)


mike

Ähnliche fragen