《Linux From Scratch》第二部分:准备构建 第五章:构建临时文件系统- 5.4. Binutils-2.25 - 第一遍

简介:

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

大概编译时间: 1 SBU
所需磁盘空间: 545 MB

5.4.1. 安装交叉编译的 Binutils

[Note]

注意

返回前面章节重新阅读注意事项。了解标记为重要的注意事项能在后面帮你节省很多问题。

第一个编译 Binutils 软件包很重要,因为 Glibc 和 GCC 会对可用的链接器和汇编器执行各种测试以决定启用它们自己的哪些功能。

Binutils 手册建议在源码目录之外一个专门的编译目录里面编译 Binutils:

mkdir -v ../binutils-build
cd ../binutils-build
[注意]

注意

为了衡量在本书中其余部分所使用 SBU 值,我们要测量一下这个软件包从配置到包括第一次安装在内的编译时间。为了轻松的做到这点,用类似 time { ./configure ... &&... && make install; } 的方式将命令包装在 time 命令中。

[Note]

注意

第五章中大概编译的 SBU 值和所需磁盘空间不包括测试套件数据。

现在准备编译 Binutils:

../binutils-2.25/configure     \
    --prefix=/tools            \
    --with-sysroot=$LFS        \
    --with-lib-path=/tools/lib \
    --target=$LFS_TGT          \
    --disable-nls              \
    --disable-werror

配置选项的含义:

--prefix=/tools

告诉配置脚本将 Binutils 程序安装到 /tools 文件夹。

--with-sysroot=$LFS

用于交叉编译,告诉编译系统在 $LFS 中查找所需的目标系统库。

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

指定需要配置使用的链接器的库路径。

--target=$LFS_TGT

因为 LFS_TGT 变量中的机器描述和 config.guess 脚本返回的值略有不同,这个选项会告诉 configure 脚本调整 Binutils 的编译系统来编译一个交叉链接器。

--disable-nls

这会禁止国际化(i18n),因为国际化对临时工具来说没有必要。

--disable-werror

这会防止来自宿主编译器的警告事件导致停止编译。

继续编译软件包:

        make

现在编译完成了。通常现在我们会运行测试套件,但在这个初期阶段,测试套件框架(Tcl、Expect 和 DejaGNU) 还没有就绪。在此进行测试的好处不多,因为第一遍编译的程序很快会被第二遍的代替。

如果是在 x86_64 上编译,创建符号链接,以确保工具链的完整性:

case $(uname -m) in
  x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;;
esac

安装软件包:

make install

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



创建者:Gerard Beekmans

编辑者:Matthew Burgess 和 Armin K.

翻译团队:LCTT

译者/校对:ictlyh,wxy

原文链接     

相关文章
|
2天前
|
Ubuntu Linux 编译器
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
|
3天前
|
Linux Windows
虚拟机添加新硬盘之linux系统篇
虚拟机添加新硬盘之linux系统篇
|
1天前
|
IDE Linux 开发工具
Linux 系统上安装
在Linux和Mac上安装Lua 5.3.0只需下载源码,解压,编译和安装。Windows用户可选择SciTE IDE或通过LuaForWindows在Github或Google Code下载安装。创建 HelloWorld.lua,使用`lua HelloWorld.lua`运行显示"Hello World!"。另可参考LuaDist官方推荐方式安装。
|
1天前
|
编解码 Ubuntu Linux
|
2天前
|
Linux
|
2天前
|
Linux
请问如何在Linux系统中删除一个磁盘分区
请问如何在Linux系统中删除一个磁盘分区
|
2天前
|
Linux
Linux系统的磁盘管理
Linux系统的磁盘管理
|
2天前
|
Unix Linux Shell
Linux系统使用超详细(一)
Linux系统是一种开源的、类Unix操作系统内核的实现,它基于Unix的设计原理和思想,并在全球范围内广泛应用。以下是对Linux系统的详细描述:
|
3天前
|
监控 安全 Linux
Linux系统入侵排查(三)
本文介绍了Linux系统入侵排查的相关知识。首先解释了进行系统入侵排查的原因,即当企业遭受黑客攻击、系统崩溃或其他安全事件时,需要迅速恢复系统并找出入侵来源。接着,重点讲述了日志入侵排查的重要性,因为日志文件记录了系统的重要活动,可以提供入侵行为的线索。
|
3天前
|
安全 Linux Shell
Linux系统入侵排查(二)
本文介绍了Linux系统入侵排查的步骤,包括检查历史命令记录、可疑端口和进程、开机启动项以及定时任务。作者强调了了解这些技能对于攻防两端的重要性,并提供了相关命令示例,如查看`/root/.bash_history`记录、使用`netstat`分析网络连接、检查`/etc/rc.local`和`/etc/cron.*`目录下的可疑脚本等。此外,还提到了如何查看和管理服务的自启动设置,以判断是否被恶意篡改。文章旨在帮助读者掌握Linux服务器安全维护的基本技巧。