已安装的程序: addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump, ranlib, readelf, size, strings, 和 strip
已安装的库: libiberty.a, libbfd.[a,so], 和 libopcodes.[a,so]
Binutils 软件包包含链接器、汇编器以及其他用于处理目标文件的工具。
已知当 Binutils 的默认优化标志(包括 -march 和 -mcpu 选项)被更改时,此软件包会出现问题。如果定义了任何覆盖默认优化的环境变量,例如CFLAGS和CXXFLAGS,在构建 Binutils 时取消设置它们。
验证 PTY 在 chroot 环境中是否正常工作。通过执行一个简单的测试来检查一切是否设置正确
expect -c "spawn ls"
如果出现以下消息,则 chroot 环境未设置为正确的 PTY 操作
The system has no more ptys. Ask your system administrator to create more.
在为 Binutils 和 GCC 运行测试套件之前,需要解决此问题。
Binutils 文档建议在源目录之外的专用构建目录中构建 Binutils
mkdir -v ../binutils-build cd ../binutils-build
准备编译 Binutils
../binutils-2.15.94.0.2.2/configure --prefix=/usr \ --enable-shared
编译软件包
make tooldir=/usr
通常,tooldir(可执行文件最终所在的目录)设置为$(exec_prefix)/$(target_alias)。例如,i686 机器会将其扩展为/usr/i686-pc-linux-gnu。因为这是一个自定义系统,所以在/usr中的这个特定于目标的目录不是必需的。$(exec_prefix)/$(target_alias)如果系统用于交叉编译(例如,在 Intel 机器上编译一个软件包,该软件包生成可以在 PowerPC 机器上执行的代码),则会使用它。
本节中 Binutils 的测试套件被认为是至关重要的。在任何情况下都不要跳过它。
测试结果
make check
安装软件包
make tooldir=/usr install
安装libiberty一些软件包需要的头文件
cp -v ../binutils-2.15.94.0.2.2/include/libiberty.h /usr/include