38 Kb Source -> 400 Kb Binary
-
Hi!
Mein gcc schafft es auf 38 Kb C++-Source ne' 400 Kb Binary zu basteln.
Dabei linke ich alle Libs dynamisch dazu.Ich benutze KDev. mit folgenden configure Params:
--build=i386-linux --host=i386-linux --target=i386-linux --disable-debug --enable-finalWie kriege ich meine Binary kleiner?
Hier ist die Liste der Libs die dazu linke:
libIL.so.1 => /usr/local/lib/libIL.so.1 (0x40012000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x40114000)
libtiff.so.3 => /usr/lib/libtiff.so.3 (0x40135000)
libmng.so.1 => /usr/lib/libmng.so.1 (0x40178000)
libz.so.1 => /lib/libz.so.1 (0x401ce000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x401db000)
liblcms.so.1 => /usr/lib/liblcms.so.1 (0x401f8000)
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40212000)
libm.so.6 => /lib/libm.so.6 (0x402be000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x402df000)
libc.so.6 => /lib/libc.so.6 (0x402e7000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)Außerdem linke ich noch den Xvid-Codec. Der wird von ldd allerdings nicht
angezeigt. Habe wohl vergessen ldconfig auszuführen.
-
info gcc
Probier mal -Os
-
Ich habe O2 drin!
-
zeig am besten mal den kompletten Compiler/Linker aufruf
-
man strip
-
Strip, danach upx
-
g++ -DHAVE_CONFIG_H -I. -I. -I.. -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -DNDEBUG -DNO_DEBUG -O2 -O3 -Wall -fno-exceptions -fno-check-new -fexceptions -MT xvid.all_cpp.o -MD -MP -MF
g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -DNDEBUG -DNO_DEBUG -O2 -O3 -Wall -fno-exceptions -fno-check-new -fexceptions -s -o xvid xvid.all_cpp.o -lxvidcore /usr/local/lib/libIL.so -lpng -ltiff /usr/lib/libmng.so -L/usr/lib -lz -lm /usr/lib/libjpeg.so -llcms -Wl,--rpath -Wl,/usr/local/lib -Wl,--rpath -Wl,/usr/local/lib
Das lustig ist, das die .o Datei noch schön klein ist. Muß also
am Linker liegen.