5.3. Binutils-2.15.94.0.2.2 - Pass 1

Binutils 软件包包含一个链接器、一个汇编器以及其他用于处理目标文件的工具。

预计构建时间: 1.0 SBU
所需磁盘空间: 179 MB
安装依赖于: Bash, Bison, Coreutils, Diffutils, Flex, GCC, Gettext, Glibc, Grep, M4, Make, Perl, Sed, 和 Texinfo

5.3.1. Binutils 的安装

重要的是 Binutils 必须是第一个被编译的软件包,因为 Glibc 和 GCC 都会对可用的链接器和汇编器执行各种测试,以确定启用哪些自身的功能。

已知当更改其默认优化标志(包括 -march-mcpu 选项)时,此软件包会出现问题。如果定义了任何覆盖默认优化的环境变量,例如CFLAGSCXXFLAGS,在构建 Binutils 时取消设置它们。

如果您是从运行 Gcc-4 或更高版本的主机构建,则必须修补此版本 Binutils 的首次构建,以便它可以由主机系统编译。

patch -Np1 -i ../binutils-2.15.94.0.2.2-gcc4-1.patch

Binutils 文档建议在源目录之外的专用构建目录中构建 Binutils

mkdir -v ../binutils-build
cd ../binutils-build
[Note]

注意

为了使本书其余部分列出的 SBU 值有用,请测量从配置到首次安装(包括首次安装)构建此软件包所需的时间。为了轻松实现这一点,请将这三个命令包装在 time 命令中,如下所示: time { ./configure ... && make && make install; }

现在准备编译 Binutils

../binutils-2.15.94.0.2.2/configure --prefix=/tools --disable-nls

configure 选项的含义

--prefix=/tools

这告诉 configure 脚本准备将 Binutils 程序安装在/tools目录中。

--disable-nls

这禁用了国际化,因为临时工具不需要 i18n。

继续编译软件包

make

编译现已完成。通常我们现在会运行测试套件,但在这个早期阶段,测试套件框架(Tcl、Expect 和 DejaGNU)尚未就绪。此时运行测试的好处是最小的,因为第一次传递中的程序很快将被第二次传递中的程序替换。

安装软件包

make install

接下来,为稍后的“调整”阶段准备链接器

make -C ld clean
make -C ld LIB_PATH=/tools/lib

make 参数的含义

-C ld clean

这告诉 make 程序删除ld子目录中的所有已编译文件。

-C ld LIB_PATH=/tools/lib

此选项重建ld子目录中的所有内容。在命令行上指定LIB_PATHMakefile 变量允许我们覆盖默认值,并将其指向临时工具位置。此变量的值指定链接器的默认库搜索路径。此准备工作在本书后面的章节中使用。

[Warning]

警告

不要 移除 Binutils 构建和源目录。在本章的后面部分将再次需要它们当前的原始状态。

有关此软件包的详细信息,请参阅 第 6.13.2 节,“Binutils 的内容”。