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?
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 elfbut 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
stripwithout 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.