首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux From Scratch(LFS11.0)构建 LFS 系统 - Binutils-2.37

Linux From Scratch(LFS11.0)构建 LFS 系统 - Binutils-2.37

作者头像
Lucifer三思而后行
发布2021-10-08 14:47:56
发布2021-10-08 14:47:56
9310
举报

Binutils 包含汇编器、链接器以及其他用于处理目标文件的工具。

安装 Binutils

解压软件包:

代码语言:javascript
复制
cd /sources
tar xf binutils-2.37.tar.xz
cd binutils-2.37

进行简单测试,确认伪终端 (PTY) 在 chroot 环境中能正常工作:

代码语言:javascript
复制
expect -c "spawn ls"

如果输出不是上面这样,就说明环境没有为 PTY 的正常工作设置好。在运行 Binutils 和 GCC 的测试套件前必须解决这个问题。

上游开发者提供了一个补丁,它能修复在构建一些软件包时出现的问题。应用该补丁:

代码语言:javascript
复制
patch -Np1 -i ../binutils-2.37-upstream_fix-1.patch

构建系统中的一处错误导致软件包附带的 man 页面为空。绕过这个问题并删除附带的 man 页面,这样 man 页面就会被正确地重新生成:

代码语言:javascript
复制
sed -i '63d' etc/texi2pod.pl
find -name \*.1 -delete

Binutils 文档推荐在一个专用的构建目录中构建 Binutils:

代码语言:javascript
复制
mkdir -v build
cd build

准备编译 Binutils:

代码语言:javascript
复制
../configure --prefix=/usr       \
             --enable-gold       \
             --enable-ld=default \
             --enable-plugins    \
             --enable-shared     \
             --disable-werror    \
             --enable-64-bit-bfd \
             --with-system-zlib

编译该软件包:

代码语言:javascript
复制
make tooldir=/usr

测试编译结果:

代码语言:javascript
复制
make -k check

已知四项和 zlib 相关的测试可能失败。

安装该软件包:

代码语言:javascript
复制
make tooldir=/usr install -j1

删除无用的静态库:

代码语言:javascript
复制
rm -fv /usr/lib/lib{bfd,ctf,ctf-nobfd,opcodes}.a

安装完成后清理工作:

代码语言:javascript
复制
cd ../..
rm -rf binutils-2.37

本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 安装 Binutils
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档