Linux Binutils 基本使用教程

简介

GNU Binutils(二进制实用程序)是用于在 Unix/Linux 系统中操作二进制文件的工具集合。这些工具有助于汇编、链接、反汇编和检查二进制可执行文件、目标文件、库和汇编代码。

安装

  • Debian/Ubuntu
shell 复制代码
sudo apt update && sudo apt install binutils
  • RHEL/CentOS
shell 复制代码
sudo yum install binutils
  • macOS
shell 复制代码
brew install binutils

常用 Binutils 命令

  • as:GNU 汇编器(将汇编代码转换为机器代码)

  • ld:GNU 链接器(将目标文件链接到可执行文件中)

  • objdump:显示有关二进制文件的信息

  • nm:列出目标文件中的符号

  • ar:创建和管理静态库

  • ranlib:生成静态库的索引

  • strip:从二进制文件中删除调试符号

  • size:显示二进制文件的节大小

  • strings:从二进制文件中提取可读文本

  • readelf:显示有关 ELF(可执行和可链接格式)文件的信息

  • addr2line:将地址转换为源文件和行号

  • c++filt:解密 C++ 符号名称

示例用法

objdump 检查二进制文件

shell 复制代码
objdump -d /bin/ls  # 反汇编 ls 命令
objdump -x /bin/ls  # 显示完整的二进制信息

nm 显示目标文件中的符号

shell 复制代码
nm /bin/ls  # 列出 ls 二进制文件中的符号

strings 提取可读文本

shell 复制代码
strings /bin/ls  # 从二进制文件中提取可读文本

readelf 检查 ELF 文件

shell 复制代码
readelf -h /bin/ls  # 显示 ELF 标头

strip 删除调试符号

shell 复制代码
strip myprogram  # 通过删除符号来减少二进制大小

创建并链接汇编程序

  • 编写一个汇编程序(hello.s)
shell 复制代码
.global _start
.section .text
_start:
    mov $1, %rax
    mov $1, %rdi
    mov $msg, %rsi
    mov $len, %rdx
    syscall

    mov $60, %rax
    xor %rdi, %rdi
    syscall

.section .data
msg: .ascii "Hello, Binutils!\n"
len = . - msg
  • 用 as 组装
shell 复制代码
as hello.s -o hello.o
  • 使用 ld 来链接
shell 复制代码
ld hello.o -o hello
  • 运行程序
shell 复制代码
./hello

输出

shell 复制代码
Hello, Binutils!
相关推荐
wVelpro21 分钟前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm
程序员老舅1 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华1 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
爱吃生蚝的于勒2 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森2 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
翼龙云_cloud2 小时前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.2 小时前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
好好学习天天向上~~3 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
冉佳驹3 小时前
Linux ——— 静态库和动态库的设计与使用
linux·动态库·静态库·fpic
陌上花开缓缓归以3 小时前
linux mtd-utils使用源码分析(ubuntu测试版)
linux·arm开发·ubuntu