Binutils-2.23.2

6.13. Binutils-2.23.2

Binutils 程序包包含链接器、汇编器和其他用于处理对象文件的工具。

预计编制时间: 1.9 SBU
需求磁盘空间: 343 MB

6.13.1. 安装 Binutils

运行一个简单的测试确认 PTY 在 chroot 环境中正常工作:

expect -c "spawn ls"

此命令应该输出以下信息:

spawn ls

如果输出包含以下消息,那就意味着环境没有为 PTY 操作设置好。此问题需要在运行 Binutils 和 GCC 的测试套件之前解决:

The system has no more ptys.
Ask your system administrator to create more.

阻止安装一个过时的 standards.info 文件,因为稍后在 Autoconf 指令中会安装一个更新的:

rm -fv etc/standards.info
sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in

Fix a couple of syntax errors that prevent the documentation from building with Texinfo-5.1:

sed -i -e 's/@colophon/@@colophon/' \
       -e 's/doc@cygnus.com/doc@@cygnus.com/' bfd/doc/bfd.texinfo

Binutils 文档推荐在源代码目录外另建目录编制 Binutils:

mkdir -v ../binutils-build
cd ../binutils-build

准备编译 Binutils:

../binutils-2.23.2/configure --prefix=/usr --enable-shared
[注意] 

注意

configure 还有一个可选参数,--enable-lto,可以用于允许 arnm 和 ranlib 命令接受 --plugin 参数,进而允许 gcc 在需要的时候进行 “链接时优化”。LFS 和 BLFS 中现在都没有程序包使用此功能。

编译程序包:

make tooldir=/usr

make 参数的含义:

tooldir=/usr

通常,tooldir (所有的可执行文件所在的目录) 设置为 $(exec_prefix)/$(target_alias)。例如,x86_64 计算机上会是 /usr/x86_64-unknown-linux-gnu。因为这是自定义的系统,/usr 中这个针对平台的目录并不需要。如果系统要进行交叉编译 (例如在 Intel 计算机上编译程序包产生用于 PowerPC 计算机的代码),会使用 $(exec_prefix)/$(target_alias)

[重要] 

重要

本节中 Binutils 的测试套件是十分重要的。任何情况下都不要跳过。

测试结果:

make check

安装程序包:

make tooldir=/usr install

安装某些程序包需要的 libiberty 头文件:

cp -v ../binutils-2.23.2/include/libiberty.h /usr/include

6.13.2. Binutils 的内容

安装的程序: addr2line, ar, as, c++filt, elfedit, gprof, ld, ld.bfd, nm, objcopy, objdump, ranlib, readelf, size, strings 和 strip
安装的库: libiberty.a, libbfd.{a,so} 和 libopcodes.{a,so}
安装的目录: /usr/lib/ldscripts

简介

addr2line

将程序地址翻译成文件名和行号;给定地址和可执行文件名称,它使用其中的调试信息判断与此地址有关联的源文件和行号

ar

创建、修改和提取归档

as

一个汇编器,将 gcc 的输出汇编为对象文件 into object files

c++filt

被链接器用于修复 C++ 和 Java 符号,防止重载的函数相互冲突

elfedit

更新 ELF 文件的 ELF 头

gprof

显示分析数据的调用图表

ld

一个链接器,将几个对象和归档文件组合成一个文件,重新定位它们的数据并且捆绑符号索引

ld.bfd

到 ld 的硬链接

nm

列出给定对象文件中出现的符号

objcopy

将一种对象文件翻译成另一种

objdump

显示有关给定对象文件的信息,包含指定显示信息的选项;显示的信息对编译工具开发者很有用

ranlib

创建一个归档的内容索引并存储在归档内;索引列出其成员中可重定位的对象文件定义的所有符号

readelf

显示有关 ELF 二进制文件的信息

size

列出给定对象文件每个部分的尺寸和总尺寸

strings

对每个给定的文件输出不短于指定长度 (默认为 4) 的所有可打印字符序列;对于对象文件默认只打印初始化和加载部分的字符串,否则扫描整个文件

strip

移除对象文件中的符号

libiberty

包含多个 GNU 程序会使用的途径,包括 getoptobstackstrerrorstrtol 和 strtoul

libbfd

二进制文件描述器库

libopcodes

一个库,用于处理 opcodes——处理器指令的 “可读文本” 版本;用于编制 objdump 这样的工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值