Channels ▼

Al Williams

Dr. Dobb's Bloggers

Shrinking ELF

March 20, 2010

There was a time when embedded developers could scoff at large-scale operating system issues. You simply created a binary image of your software, burned your EPROM, and that was that. But today's systems are getting pretty big. The system I'm working on now would have been a perfectly good desktop computer just a few years ago. And it runs Linux.

One problem with many of the development tools under Linux is they assume an embarrassment of riches -- plenty of memory and disk space available. When you are targeting a small board, you may want to coax the tools into being a bit more economical.

Of course, you can't do much embedded with gcc without figuring out how to suppress the standard libraries. But when you want to really go tiny, you can do a lot more (or is that a lot less?).

I was thinking this article was just covering the basics when they turn a 3998 byte ELF file into a 372 byte file. But that was just the first quarter of the article. After that, they delve into the ELF header itself to reduce that same program down to 45 bytes on disk! Granted, its only a 7 byte program to start with, and not all these techniques will be applicable for every program. But I learned a few things and you never know when some arcane bit of knowledge will come in handy -- or at least win a geek bar bet.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.