Warning! | After you compile (52.8) and debug a program, there's a part of the executable binary that you can delete to save disk space. The strip command does the job. Note that once you strip a file, you can't use a symbolic debugger like dbx on it! |
---|
Here's an example. I'll compile a C program and list it. Then I'll strip it and list it again. How much space you save depends on several factors, but you'll almost always save something.
-s | % |
---|
If you know that you want a file stripped when you compile it, use cc with its -s option. If you use ld-say, in a makefile (28.13)- use the -s option there.
Here's a shell script named stripper that finds all the unstripped executable files in your bin directory (4.2) and strips them. It's a quick way to save space on your account. (The same script, searching the whole filesystem, will save even more space for system administrators - but watch out for unusual filenames (9.22)):
xargs | #! /bin/sh skipug="! -perm -4000 ! -perm -2000" # SKIP SETUID, SETGID FILES find $HOME/bin -type f \( -perm -0100 $skipug \) -print | xargs file | sed -n '/executable .*not stripped/s/:[TAB].*//p' | xargs -t strip |
---|
The find (17.2) finds all executable files that aren't setuid or setgid (24.14) and runs file (25.8) to get a description of each. The sed command skips shell scripts and other files that can't be stripped. sed searches for lines from file like:
/usr/local/bin/xemacs:[TAB]xxx
... executablexxx
... not stripped
with the word "executable" followed by "not stripped"-sed removes the colon, tab, and description, then passes the filename to strip.
-