5.9. Binutils-2.24 - 第 2 遍

Binutils 软件包包含链接器、汇编器和其他用于处理对象文件的工具。

预计构建时间: 1.1 SBU
磁盘空间需求: 417 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.24/configure     \
    --prefix=/tools            \
    --disable-nls              \
    --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

这让 configure 脚本在编译 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 子目录中的所有东西。在命令行上设定 LIB_PATH Makefile 变量可以让我们覆盖临时工具的默认值,让它指向合适的最终路径。这个变量的值指定链接器的默认库搜索路径。这项准备用于下一章。

这个包的详细信息位于 第 6.13.2 节 “Binutils 的内容.”