Re: Programme kompilieren
Thomas Hertweck wrote:
Beim direkten Aufruf der einzelnen Programme cpp, cc1, as, und ld musst Du mitunter noch einiges mehr uebergeben, was Du beim Aufruf ueber gcc nicht musst. Vermutlich brauchst Du beim Linken noch /lib/crt[01n].o (start-up routine), oder aehnliches. Oder Du musst den Entry-Point angeben. Aber damit habe ich mich auch noch nicht beschaeftigt.... :-)
Normalerweise tue ich das auch nicht per Hand, aber ich bin gerade mal
neugierig geworden. Also, folgender Ablauf funktionierte bei mir:
$ echo -e '#include
* Eilert Brinkmann schrieb am 16.Jun.2001:
Normalerweise tue ich das auch nicht per Hand, aber ich bin gerade mal neugierig geworden. Also, folgender Ablauf funktionierte bei mir:
$ echo -e '#include
\nmain(){printf("Hello!\n");}' >hello.c $ cpp hello.c >hello.i $ /usr/lib/gcc-lib/i486-linux/egcs-2.91.66/cc1 hello.i [...irgendwelche Ausgaben...] $ as -o hello.o hello.s $ ld -dynamic-linker /lib/ld-linux.so.2 -o hello /usr/lib/crt1.o \ /usr/lib/crti.o hello.o -lc /usr/lib/crtn.o $ ./hello Hello! $
Interessant ist auch die Größe der Dateien: $ wc hello* 13 103 11932 hello 3 4 46 hello.c 3162 2015 20345 hello.i 4 12 904 hello.o 25 47 363 hello.s 3207 2181 33590 insgesamt Man beachte hello.i Muß man gesehen haben. ;) Ach so: $ strip hello $ wc hello wc hello 3 34 2316 hello Und jetzt das Gleiche mit einem bison und/oder flex davor? ;)) Bernd -- ACK = ACKnowledge = Zustimmung | NAC = No ACknowledge = keine Zustimmung DAU = Dümmster Anzunehmender User | LOL = Laughing Out Loud = Lautes Lachen IIRC = If I Remember Correctly = Falls ich mich richtig erinnere OT = Off Topic = Am Thema (der Liste) vorbei |Zufallssignatur 11
Hallo Liste, On Sat, 16 Jun 2001 at 05:16 (+0200), Bernd Brodeßer wrote:
* Eilert Brinkmann schrieb am 16.Jun.2001:
Normalerweise tue ich das auch nicht per Hand, aber ich bin gerade mal neugierig geworden. Also, folgender Ablauf funktionierte bei mir:
$ echo -e '#include
\nmain(){printf("Hello!\n");}' >hello.c $ cpp hello.c >hello.i $ /usr/lib/gcc-lib/i486-linux/egcs-2.91.66/cc1 hello.i [...irgendwelche Ausgaben...] $ as -o hello.o hello.s $ ld -dynamic-linker /lib/ld-linux.so.2 -o hello /usr/lib/crt1.o \ /usr/lib/crti.o hello.o -lc /usr/lib/crtn.o $ ./hello Hello!
auch wenn das Thema schon länger beendet ist (am Quoting dürfte man recht gut erkennen, um was ges damals ging), habe ich jetzt durch Zufall eine schöne Internetseite gefunden "Wie ein C-Programm aus dem Sourcecode entsteht", die den einen oder anderen interessieren könnte und zu dieser Thematik passt. Die URL: http://kbs.cs.tu-berlin.de/~jutta/unix1/wie-ein-c-programm.html Gruß, Bernhard
participants (3)
-
B.Brodesser@t-online.de
-
Bernhard Walle
-
Eilert Brinkmann