How to strip executables thoroughly
Asked Answered
M

5

46

I'd like to strip as much as I can - on Linux: an ELF. I only want in there the stuff I need to run it.

I tried using strip:

strip --strip-all elf

But it doesn't seem to do a good job: nm still displays lots of stuff, and the binary is still big.

What should I do?

Monaco answered 14/11, 2010 at 18:44 Comment(3)
How did you build it to begin with?Caught
I realise that this question was asked a long time back. I'm assuming that you've built it to be a dynamically linked binary. You may get more satisfactory results if you create a statically linked ELF file and then strip it.Inscrutable
@Monaco The comment from Ignacio is relevant. Adding -s to gcc will empty the symbol table.Premed
P
45

If everything else fails, you could read the documentation, starting with man strip.

Seriously, maybe your application has a lot of symbols and code. At one extreme, the biggest size reduction would be rm elf but then your program won't run anymore. It all depends on your program and what you coded into it.

As a concrete example, I recently worked with a large C++ library where strip without further arguments reduced the size from 400+mb to about 28 mb. But then you could not link anymore against it (in the context of other shared libraries), rendering it somewhat useless.

But when using strip --strip-unneeded, it changed the size from 400+ mb to 55 mb which is still considerable, yet allowed the library to be accessed from other shared libraries.

In short, I'd trust strip. Maybe your application cannot be reduced any further without code changes.

Piezoelectricity answered 14/11, 2010 at 18:52 Comment(1)
Cheeky comment concerning the rm command, but the --strip-unneeded seems to be the important note. Without performing this, I also see the gcc -s flag as a nice answer from another comment, but may be too much for library linking as mentioned here.Dinesen
B
16

Using the -R option to strip, you can strip away all sections you don't need. Also look at this regarding minimal ELF executables.

Bobker answered 14/11, 2010 at 18:51 Comment(0)
B
8

I would check out this great article that goes into depth on making an ELF executable as small as possible. Maybe it has info that could help!

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

Bonne answered 14/6, 2011 at 13:31 Comment(0)
N
2
strip -R .comment
gcc -Os elf.c

Those two might help.

Nunnally answered 14/11, 2010 at 18:53 Comment(0)
S
0

to strip all symbols, use -s or --strip-all

Strand answered 9/7, 2023 at 19:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.