Mailinglist Archive: opensuse-de (5264 mails)
| < Previous | Next > |
Re: Programme kompilieren
- From: Eilert Brinkmann <eilert@xxxxxxxxxxxxxxxxxxxxxxxx>
- Date: 16 Jun 2001 00:22:04 +0200
- Message-id: <xttd785qt83.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
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 <stdio.h>\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!
$
Der Linker-Aufruf war mehr oder weniger Try-and-Error, aber wie man
sieht geht's irgendwie. Ich garantiere aber nicht dafür, daß diese
Aufrufe vorbildlich sind und werde zukünftig wieder gcc die Wahl der
richtigen Argumente überlassen ;-)
Eilert
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik
eilert@xxxxxxxxxxxxxxxxxxxxxxxx - eilert@xxxxxxx
http://www.informatik.uni-bremen.de/~eilert/
> 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 <stdio.h>\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!
$
Der Linker-Aufruf war mehr oder weniger Try-and-Error, aber wie man
sieht geht's irgendwie. Ich garantiere aber nicht dafür, daß diese
Aufrufe vorbildlich sind und werde zukünftig wieder gcc die Wahl der
richtigen Argumente überlassen ;-)
Eilert
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Eilert Brinkmann -- Universitaet Bremen -- FB 3, Informatik
eilert@xxxxxxxxxxxxxxxxxxxxxxxx - eilert@xxxxxxx
http://www.informatik.uni-bremen.de/~eilert/
| < Previous | Next > |