{"enrichment":{"faq":[{"a":"Binutils' ar command packages object files into static libraries. Use `ar rcs libname.a file1.o file2.o` to create or update an archive, where 'r' replaces members, 'c' creates if needed, and 's' writes a symbol index. After creating the library, run `ranlib libname.a` to rebuild the symbol index for faster linking, or use ar's 's' flag to do it in one step.","q":"How do I create a static library with ar?"},{"a":"Binutils provides two main approaches. The `strip` command removes all non-essential sections: `strip binary` produces a minimal executable. For finer control, use `objcopy --strip-debug binary stripped-binary` to remove only debug symbols while keeping other metadata, or `objcopy --strip-all` for complete stripping. This reduces file size significantly for production deployments.","q":"How can I strip debug info from a binary?"},{"a":"Binutils' addr2line tool maps memory addresses back to source locations. Run `addr2line -e binary 0xaddress` to find the file and line number. For batch processing multiple addresses, pipe them to addr2line or use `addr2line -e binary < addresses.txt`. Ensure the binary retains debug symbols (compiled with -g) for accurate results.","q":"How do I convert a crash address to source code line number?"},{"a":"Binutils' c++filt utility decodes mangled C++ symbols. Use `c++filt _ZN3FooC1Ev` to display the readable function signature, or pipe symbol names: `echo '_ZN3FooC1Ev' | c++filt`. This is essential for analyzing compiled C++ binaries, crash dumps, and linker errors where symbols appear in their mangled form.","q":"How can I demangle C++ symbol names?"},{"a":"Binutils' objcopy extracts debug information into separate files. Use `objcopy --only-keep-debug binary debug.sym` to create a debug file, then `objcopy --strip-debug binary` to remove debug from the original. Link them with `objcopy --add-gnu-debuglink=debug.sym binary`, allowing debuggers to find symbols without bloating the executable.","q":"What does objcopy do for separating debug symbols?"},{"a":"Binutils' strings command lists all printable text sequences embedded in a binary. Run `strings binary` to display human-readable strings, or `strings -n 8 binary` to show only strings at least 8 characters long. This helps identify configuration values, error messages, and other embedded text useful for reverse engineering and security analysis.","q":"How do I extract strings from a compiled binary?"}],"shadow_tags":["binary-manipulation","debug-symbol-handling","crash-analysis","static-library-management","symbol-demangling","section-extraction","address-mapping","cross-compilation-tools"],"summary_rewrite":"Binutils guides you through GNU's binary manipulation toolkit for static library management, debug info handling, address-to-source mapping, and symbol demangling. Master ar for archives, strip and objcopy for binary processing, addr2line for crash analysis, and c++filt for C++ symbol names."},"files":[{"bytes":4753,"path":"skills/binaries/binutils/SKILL.md","sha256":"784397dacef9aaa5c004693c21ea1f1f0dd1f3cb219681b471c356f9ab921e5d","url":"https://skillfed.io/files/mohitmishra786/low-level-dev-skills/binutils/ec484526/SKILL.md"}],"id":"mohitmishra786/low-level-dev-skills/binutils","links":{"html":"https://skillfed.io/mohitmishra786/low-level-dev-skills/binutils","md":"https://skillfed.io/mohitmishra786/low-level-dev-skills/binutils.md","repo":"https://github.com/mohitmishra786/low-level-dev-skills"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":19,"language":"JavaScript","last_updated":"2026-06-27","license":"MIT","name":"binutils","publisher":"mohitmishra786","stars":148},"relations":{"similar":[{"id":"mohitmishra786/low-level-dev-skills/elf-inspection"},{"id":"mohitmishra786/low-level-dev-skills/linkers-lto"},{"id":"mohitmishra786/low-level-dev-skills/dwarf-debug-format"},{"id":"mohitmishra786/low-level-dev-skills/core-dumps"},{"id":"mohitmishra786/low-level-dev-skills/reverse-engineering"},{"id":"mohitmishra786/low-level-dev-skills/dynamic-linking"},{"id":"mohitmishra786/low-level-dev-skills/gdb"},{"id":"mohitmishra786/low-level-dev-skills/binary-hardening"},{"id":"software-mansion-labs/skills/jsi"},{"id":"mohitmishra786/low-level-dev-skills/cross-gcc"}]},"slug":{"owner":"mohitmishra786","repo":"low-level-dev-skills","skill":"binutils"},"version":"ec484526"}
