Binutils 软件包包含一个链接器、一个汇编器、以及其它处理目标文件的工具。
6.13.1. 安装 Binutils
通过一个简单测试验证在 chroot 环境下 PTY 工作正常:
expect -c "spawn ls"
这个命令应该输出以下内容:
spawn ls
假如输出包括下面的信息,那么表示没有为 PTY 操作设置好环境。在运行 Binutils 和 GCC 的测试套件之前需要解决这个问题:
The system has no more ptys.
Ask your system administrator to create more.
Binutils 的文档建议在源文件目录之外一个专用的编译目录编译 Binutils:
mkdir -v ../binutils-build cd ../binutils-build
准备编译 Binutils:
../binutils-2.25/configure --prefix=/usr \ --enable-shared \ --disable-werror
编译软件包:
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 -k check
安装软件包:
make tooldir=/usr install
6.13.2.Binutils 内容
简要介绍
转换程序地址为文件名称和行号;给定一个地址和可执行文件的名称,它使用可执行文件中的调试信息来判断与该地址关联的源文件以及行号。 |
|
创建、更改以及抽取归档文件。 |
|
一个将 gcc 的输出汇编到目标文件的汇编器。 |
|
链接器用来过滤 C++ 和 Java 符号以及防止重载函数冲突。 |
|
更新 ELF 文件的 ELF 文件头 |
|
显示调用关系图配置数据 |
|
一个将多个目标文件和归档文件合并为单一文件,重定位数据及绑定符号引用的链接器。 |
|
到 ld 的硬链接。 |
|
列出指定目标文件中出现的符号 |
|
转换某种类型的目标文件到另一种类型 |
|
显示给定目标文件的信息,用选项可以控制显示特定信息;显示的信息对于使用编译工具的程序员非常有用。 |
|
生成归档文件内容的索引并保存到归档文件;索引列出了所有归档文件成员——可重定位的目标文件定义的符号。 |
|
显示 ELF 类型的二进制文件的信息 |
|
列出所给目标文件各部分大小和总的大小 |
|
对每个给定文件,输出不低于指定长度(默认是4)的可打印字符序列;对于目标文件,它默认只打印初始化和引导部分的字符串,而对于其它类型的文件扫描整个文件。 |
|
从目标文件中去除符号 |
|
二进制文件描述库 |
|
用于处理操作码—处理器指令的“可读文本”版本 的库;用于构建类似 objdump 的工具。 |