tags:

views:

1299

answers:

3

Hi, what is this little application for?

When using it without any options reduces the size of the executables, but how/what it does?

+6  A: 

It strips symbol information from the binary. The binary contains some information that maps symbols (e.g. function names) to particular locations. strip removes those.

Mehrdad Afshari
+4  A: 

In its default operation, the strip command removes the symbol table and any debugging information from an executable.

From here

inkedmn
+7  A: 

From the (Mac OS X, but others are similar) man page:

strip removes or modifies the symbol table attached to the output of the assembler and link editor. This is useful to save space after a program has been debugged and to limit dynamically bound symbols.

Note the bit about "after a program has been debugged" because debugging a stripped executable is very hard, indeed. The "limit dynamically bound systems" is a rarer use: it lets you make some of the functions in an external library inaccessible by taking away the index entries that tell where the actual code is located. This is also explained in the man page.

As cheap and plentiful as disk is in most situation you simply wouldn't bother with this anymore. But you might want it for space constrained situation like embeded devices, rescue disks, etc.

dmckee
As long as you keep an unstripped copy of your executable around, you can freely ship your stripped version and debug against the unstripped version, when needed. This is common in embedded development, for instance: if a core file (from a customer running the stripped binary) comes in from the field, you can load the unstripped binary into gdb and then open the core file and have full symbolic debugability.
Dan Moulding
While hard disk space is cheap, disk performance is not. The smaller the binaries are, the less disk I/O has to be performed when loading the application/library.
Isak Savo