Binutils 是一组开发工具,包括连接器、汇编器和其他用于目标文件和档案的工具。
如果你把这个包缺省的优化参数(包括 -march 和 -mcpu 参数)改变的话,它会有些不正常的表现。因此,如果你定义了任何优化参数的话,比如 CFLAGS 和 CXXFLAGS,我们劝你在编译 Binutils 时 unset 或修改它们。
现在我们测试一下在 chroot 环境中,你的伪终端(PTY)是否正常工作。运行下面的命令:
expect -c "spawn ls"
如果看到这样的输出:
The system has no more ptys. Ask your system administrator to create more.
说明你的 chroot 环境没有设置好PTY,这时运行 Binutils 和 GCC 的测试套件就没有意义了,你必须先解决PTY设置。
Binutils 的文档推荐用一个新建的目录来编译它,而不是在源码目录中:
mkdir ../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 目录后面再存在特殊的后缀。它只是在交叉编译时(比如在Intel机器上编译将要在PowerPC上执行的程序)才用到。
本节的 Binutils 测试套件很重要。在任何情况下都不要省略这一步。
对编译结果进行测试:
make check
安装软件包:
make tooldir=/usr install
安装某些软件包需要的 libiberty 头文件:
cp ../binutils-2.15.94.0.2.2/include/libiberty.h /usr/include