PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C-Code compilieren...



Lin728
01-10-2002, 13:31
Ist es Möglich, dass man von einer benötigten bibliothek nur wiklich benötigte Files compiliert und reinlinkt. Weil in manchen Fällen artet das ganz schön aus.

Falls ja, wie mach ich das. Wenn ich z.B. stdio.h includiere, wird automatisch gegen die GLIB gelinkt, und gar nicht erst geschaut, ob ich nicht wo anders auch die Datei definiert habe....

Hoffe ihr könnt mir helfen.....

Mfg

DerLipper[TuX]
01-10-2002, 13:39
mit den Schaltern -I,-i und -L,-l kannst du explizit Include- und Librarydateien angeben, die der gcc verwenden soll. Mit -static werden kann man statisch linken.

Gruß,
Marko

Lin728
01-10-2002, 13:50
hmm, schon klar.

Mein problem is aber, dass ich nicht diese monster-libraries als ganzes statisch reinlinken will, sonsern eben nur die benötigten teile.
Es würde mir auch nichts ausmachen, wenn ich die benötigten library-files neu compilieren müsste, wärhrend ich das eigentliche Programm compiliere.

Mfg

anda_skoa
01-10-2002, 15:16
Beim statischen Linken werden doch eh nur die Teile der Lib gelinkt, die man braucht, oder?

Ciao,
_

Lin728
01-10-2002, 15:56
Weiß nicht, sieht nicht so aus.

Ein gcc -o hallo hallo.c -static

Ergiebt eine 2MB große datei für einen printf-aufruf?
Entweder da hat wer schlampig programmiert, oder ich weiß nicht... ;-)

Mgh

anda_skoa
01-10-2002, 17:04
Wrid das executable kleiner, wenn du
#> strip progname
aufrufst?

Ciao,
_

Lin728
02-10-2002, 06:26
Dann wirft er ja den debug-code raus.....

anda_skoa
02-10-2002, 09:48
Ich dachte, dass er vielleicht bei strip auch die unnötigen symbols wegwirft.
Hängt vielleicht von den Optionen ab, mal man page lesen

Hmm, hast du mal --strip-unneeded versucht?

Ciao,
_

Lin728
02-10-2002, 19:17
Hmm, ja, das hilft!

Immerhin, von 1,9Mb auf 435kB.
Is zwar immer noch extrem viel für die primitive Aufgabe, aber immerhin!
Vieleicht lässt sich mit schlanken GLIBC-Ersätzen da noch mehr rauskitzeln (Dietlibc)....

Danke nochmal anda_skoda!

Lin728
02-10-2002, 20:28
Jo, die dietlib bringts!

Mit stsischem Linken nur 50kB, einfach wahnsinn!
Und mit stripi nur noch 5kB!

Das ist extrem!
5kB (dietlibc) im Vergleich zu 500kB GLibc.

Das Ding gibts unter www.fefe.de/dietlibc/

Einach:
make; install bin-i386/diet /usr/local/bin

ompiliert wird ganz normal, nur mit diet:
diet gcc -o test test.c

anda_skoa
03-10-2002, 09:43
Cool, muß ich mir merken!

Ciao,
_