5.9. Binutils-2.25 - 第2遍

Binutils 软件包包括一个链接器,汇编器和其它处理目标文件的工具。

大概编译时间: 1.0 SBU
所需磁盘空间: 574 MB

5.9.1. 安装 Binutils

再次新建一个单独的编译文件夹:

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

准备编译 Binutils:

CC=$LFS_TGT-gcc                \
AR=$LFS_TGT-ar                 \
RANLIB=$LFS_TGT-ranlib         \
../binutils-2.25/configure     \
    --prefix=/tools            \
    --disable-nls              \
    --disable-werror           \
    --with-lib-path=/tools/lib \
    --with-sysroot

新配置选项的含义:

CC=$LFS_TGT-gcc AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib

因为这是真正的原生编译 Binutils,设置这些变量能确保编译系统使用交叉编译器和相关的工具,而不是宿主系统中已有的。

--with-lib-path=/tools/lib

这告诉配置脚本在编译 Binutils 的时候指定库搜索目录,此处将 /tools/lib 传递到链接器。这可以防止链接器搜索宿主系统的库目录。

--with-sysroot

sysroot 功能使链接器可以找到包括在其命令行中的其它共享对象明确需要的共享对象。 否则的话,在某些主机上一些软件包可能会编译不成功。

编译软件包:

make

安装软件包:

make install

现在,为下一章的再调整阶段准备链接器:

make -C ld clean
make -C ld LIB_PATH=/usr/lib:/lib
cp -v ld/ld-new /tools/bin

make 参数的含义:

-C ld clean

告诉 make 程序移除所有 ld 子目录中编译过的文件。

-C ld LIB_PATH=/usr/lib:/lib

这个选项重新编译 ld 子目录中的所有文件。在命令行中指定 Makefile 的 LIB_PATH 变量可以使我们能够重写临时工具的默认值并指向正确的最终路径。该变量的值指定链接器的默认库搜索路径。 下一章中会用到这个准备。

该软件包的详细信息在6.13.2, “Binutils 软件包内容”