tuxad.com
Linux Systemhaus Herford
Code sizes
There are many sources on the web telling you how to write small C code.
But different versions of gcc produce different code sizes.
I made a small test with different gcc-versions:
- gcc 3.2.3 (exactly: "gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-54)")
- gcc 3.3.3 (exactly: "gcc (GCC) 3.3.3 20040412 (Red Hat Linux 3.3.3-7)")
- gcc 3.3.5 (exactly: "gcc (GCC) 3.3.6-hammer 20050117 (prerelease)")
- gcc 3.3.6 (original GNU code)
- gcc 3.4.6 (exactly: "gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3)")
- gcc 4.1.0 (exactly: "gcc (GCC) 4.1.0 20060304 (Red Hat 4.1.0-3)")
With each gcc I built the dietlibc-0.30
with standard dietlibc options/flags and got the following file sizes of bin-i386/dietlibc.a:
- gcc 3.2.3: 681214
- gcc 3.3.3: 631384
- gcc 3.3.5: 631336
- gcc 3.3.6: 631504
- gcc 3.4.6: 627568
- gcc 4.1.0: 627204
Then I used each compiled dietlibc with each gcc to compile some small tools.
The executables were stripped ("strip -s -R .note -R .comment").
The matrix values are the sums of the tools file sizes:
|  | diet323 | diet333 | diet335 | diet336 | diet346 | diet410 | 
| gcc323 | 26300 | 24060 | 24140 | 24204 | 24172 | 26180 | 
| gcc333 | 24108 | 23816 | 23904 | 23816 | 23940 | 25896 | 
| gcc335 | 24120 | 23828 | 23916 | 23828 | 23952 | 25908 | 
| gcc336 | 24280 | 24016 | 24112 | 24016 | 24176 | 26124 | 
| gcc346 | 24172 | 23880 | 23968 | 23880 | 23972 | 25960 | 
| gcc410 | 24356 | 24064 | 24152 | 24064 | 24188 | 26144 | 
Short note about the old-fashioned gcc-2.95.3: The file sizes I got with it are even inferior to gcc-3.2.3
and nearly bad as gcc-4.1.0.
A last test shows file sizes when compiling a tool with gcc-3.4.6:
| diet -Os gcc -Os; strip | 3776 | 
| diet -Os gcc -Os | 7358 | 
| diet gcc -Os | 7418 | 
| diet gcc -O2 | 7578 | 
| gcc -Os | 7730 | 
| gcc -O2 | 7854 | 
| gcc -O2 -g | 13966 | 
| gcc -Os -static | 550334 | 
Last note: With sstrip or elftrunc (dietlibc contrib)
you can strip symbols and section headers from ELF executables to get smaller
files.
Copyright © 2004-2024 Frank W. Bergmann
Alle Rechte vorbehalten.
Rechtliche Hinweise
 
 
  
  
Keywords dieser Seite: Linux, Systemhaus, Herford, LPI, LPIC, LPIC-2, LPIC-3, zertifiziert, Zertifizierung, Linux-Systemhaus, Unix, Betriebssystem, Linux, Systementwicklung, Optimierung, Systemprogramme, Programmierung, Software-Entwicklung, Patches, System-Administration, Systemadministration, OpenSource, Performance, Monitoring-Spezialist, Monitoringsystem, Nagios, Monitoring, Nagios-Plugin, Nagios-Server, NRPE, SNMP, IT-Security, Nameserver, DYNDNS, Hosting, Webhoster, Webhosting-Unternehmen, Webserver, Domainhosting, Domains, Virtual-Root, VirtualRoot, Linux-Distribution, Linux-Software, Linux-System, Linux-Hosts, Mail-Server, Mailprovider, Mailserver, Spamschutz, DNSBL, Technische Dokumentation, Administration, Sicherheitskonzept, Software-Entwicklung, Softwareentwicklung, Softwareprojekt, Datenschutz, Datensicherheit, Distribution, GNU GPL, Hardware, Firewire, IT-Dienstleister, IT-Dienstleistung, Internet-Fullservice, Internetserver, Netzwerk, Netzwerkadministration, Netzwerkdienste, Netzwerke, Netzwerktechnik, Programm, Programmiersprachen, Projekt, Python, Risikoanalyse, Virtual-Root-Server, Router, SMTP-Relay, SNMP, Schulungen, Security, Server, Serverdienste, Spam-Empfang, Spam-Versand, Spamassassin, Spammer, Spammer-Datenbanken, Spammer-Netze, Spammerlisten, Spamtrap, Linux, GNU, Linux-Systemhaus, Herford, Linux