§2024-12-03
Summary of Differences
| Feature | --strip-all | --strip-debug | | :------ | :--------- | :------------ | |Symbols Removed | Removes all symbols, including the symbol table. | Removes only debugging symbols (e.g., file names, line numbers). | | Debugging Information | Removed (including symbol table, debugging data, etc.). | Removed (e.g., gdb info), but keeps the symbol table and relocation data. | | Use Case | Reduce the binary to a minimal size with no debugging or symbol information. | Remove debugging info but keep symbols needed for dynamic linking or symbol resolution. | | Impact on Linker/Debugger | Breaks symbolic debugging and dynamic linking. | Keeps dynamic linking intact; allows limited symbolic debugging.
Example Scenario:
In general, --strip-all is more aggressive and will make the binary harder to debug, whereas --strip-debug removes only the debug info but retains other symbolic and linkage-related data.
Example:
alexlai@opi516G:~/build/src$ ls -l
total 8324592
-rwxrwxr-x 1 alexlai alexlai 5230313280 Dec 3 04:54 mongod <-- before
-rwxrwxr-x 1 alexlai alexlai 3294059048 Dec 3 05:05 mongos
alexlai@opi516G:~/build/src$ strip --strip-all mongo*
alexlai@opi516G:~/build/src$ ls -l
total 247700
-rwxrwxr-x 1 alexlai alexlai 142498320 Dec 3 05:52 mongod
-rwxrwxr-x 1 alexlai alexlai 111141520 Dec 3 05:52 mongos
Return to Top