这个软件包的详细内容位于 Section 6.12.2, “Contents of Binutils.”
Binutils 软件包包含一个链接器,一个汇编器和其他处理目标文件的工具。
再次建立一个专用目录:
mkdir -v ../binutils-build cd ../binutils-build
为编译 Binutils 做准备:
CC="$LFS_TGT-gcc -B/tools/lib/" \ AR=$LFS_TGT-ar RANLIB=$LFS_TGT-ranlib \ ../binutils-2.20/configure --prefix=/tools \ --disable-nls --with-lib-path=/tools/lib
新配置参数的含义:
CC="$LFS_TGT-gcc
-B/tools/lib/" AR=$LFS_TGT-ar
RANLIB=$LFS_TGT-ranlib
因为这是真实的编译 Binutils, 所以, 设置这些变量是为了确保编译系统使用的是交叉编译器和相关工具, 而不是宿主系统的工具。
--with-lib-path=/tools/lib
这个选项告诉 configure 脚本在 Binutils 编译过程中将传递给连接器的库搜索路径设为 /tools/lib
,以防止连接器搜索宿主系统的库目录。
编译这个软件包:
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 变量可以覆盖临时工具的默认值, 并将它指定到正确的最终目录。 这个变量的值指定了链接器默认的库搜索路径。这是为下一章使用做准备。
这个软件包的详细内容位于 Section 6.12.2, “Contents of Binutils.”