这个包的详细信息位于 第 6.13.2 节 “Binutils 的内容.”
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 的内容.”