Other meanings of GNU Binutils
Software
GNU Binutils is a collection of binary file manipulation and analysis tools developed by the GNU Project, essential for compiling, linking, and debugging software on Unix-like systems. It includes utilities such as as (assembler), ld (linker), objdump, nm, and readelf, which operate on object files, executables, and libraries. The suite is a cornerstone of the GNU toolchain, often used alongside GCC and GDB, and is maintained by the Free Software Foundation. Its tools are widely ported and form the basis for binary analysis in many development and reverse-engineering workflows.
The core of GNU Binutils includes the assembler as and the linker ld, which are fundamental to the compilation process. The assembler converts assembly language into machine code, producing object files, while the linker combines these objects into executables or shared libraries, resolving symbol references. Other key tools include objdump, which displays information about object files, such as disassembled code and headers; nm lists symbols; readelf displays ELF file details; and strip removes symbols to reduce file size. These utilities are indispensable for developers debugging low-level issues and for security researchers analyzing binaries.
Binutils is designed to be highly portable, supporting a wide range of CPU architectures and object file formats, including ELF, COFF, and Mach-O. This is achieved through the Binary File Descriptor (BFD) library, which provides a common interface for reading and writing different formats. The suite also includes the opcodes library for disassembly. Because of this abstraction, Binutils can be retargeted to new architectures with relative ease, making it a standard tool in cross-compilation environments. Its portability has led to its adoption in embedded systems and operating system development, where it is often the first toolchain available for a new platform.
Beyond the well-known tools, Binutils includes several lesser-known utilities. addr2line converts addresses into file and line numbers, useful for debugging crashes. objcopy copies and transforms object files, often used to convert formats or to embed data. size lists section sizes, and strings extracts printable strings from binaries. A niche tool is elfedit, which directly edits ELF headers. Historically, Binutils also included gprof for profiling, though it is now often separate. The gold linker, an alternative to ld, was developed to be faster for large applications, but it is not always installed by default. These tools are frequently used in forensics and malware analysis, where they help dissect suspicious files.
Binutils is developed in tandem with the GNU Compiler Collection (GCC) and the GNU Debugger (GDB), forming the GNU toolchain. Releases are coordinated to ensure compatibility, and the project is hosted on the GNU Savannah platform. The development is overseen by a small group of maintainers, with contributions from a global community. Binutils is a dependency for many other projects, including the Linux kernel build process and countless open-source packages. Its tools are also integrated into integrated development environments (IDEs) and continuous integration pipelines. The project's mailing lists and bug trackers are active, and new features are regularly added, such as support for newer instruction sets and improved security features like RELRO and PIE.
GNU Binutils is a fundamental component of the GNU toolchain, enabling low-level binary manipulation across diverse platforms.
Help improve the encyclopedia. Reports go straight to the site manager.