LFS 问题 - 应用第 5.7.1 节中的补丁

LFS 问题 - 应用第 5.7.1 节中的补丁

如果之前已经问过这个问题,并且这个问题是否非常明显,请提前道歉。此时我正在严格按照指南开始操作。有问题的页面是这样的:

http://linuxfromscratch.org/lfs/view/stable/chapter05/glibc.html

这一点指定运行这个:

patch -Np1 -i ../glibc-2.22-upstream_i386_fix-1.patch

然而,这样做似乎会返回这个:

lfs@linux-NVIDIA-nForce-590-SLI /mnt/lfs/tools $ patch -Np1 -i ../glibc-2.22-upstream_i386_fix-1.patch 
can't find file to patch at input line 20
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|Submitted By:            Bruce Dubbs <bdubbs at linuxfromscratch dot org>
|Date:                    2015-08-23
|Initial Package Version: 2.22
|Upstream Status:         In repository
|Origin:                  https://github.molgen.mpg.de/git-mirror/glibc
|Description:             This patch fixes a build problem on 32-bit systems.
|
|commit a08e80d1143f6b0386d5bc8cc7b8ed576091dbf3
|Author: Andrew Senkevich <[email protected]>
|Date:   Wed Aug 19 16:54:28 2015 +0300
|
|        [BZ #18796]
|        * scripts/test-installation.pl: Don't add -lmvec to build options if
|        libmvec wasn't built.
|
|diff --git a/scripts/test-installation.pl b/scripts/test-installation.pl
|index cac1562..79b2b3e 100755
|--- a/scripts/test-installation.pl
|+++ b/scripts/test-installation.pl
--------------------------
File to patch: 

因此,对于初学者来说,对于那些之前遵循过该指南的人来说,补丁与其要修补的文件的关系到底应该在哪里?根据我的阅读,它似乎可以在任何地方,但预计位于 /mnt/lfs/sources 目录中。它具体修补什么文件?运行这个命令时我应该在哪个目录中?

作为参考,我已按照指南中的要求创建了目录 /mnt/lfs /mnt/lfs/sources /mnt/lfs/tools,并从 /mnt/lfs/tools 运行命令,但我不确定在哪里我应该是这样,我可以用 ../ 引用有问题的文件。

目前补丁位于 /mnt/lfs/sources 中,glibc-2.22 的提取文件位于 /mnt/lfs/tools 中

lfs@linux-NVIDIA-nForce-590-SLI /mnt/lfs $ ls -lah /mnt/lfs/sources/glibc-2.22-upstream_i368_fix-1.patch 
-rw-r--r-- 1 linux linux 1.9K Sep 30 20:23 /mnt/lfs/sources/glibc-2.22-upstream_i368_fix-1.patch

lfs@linux-NVIDIA-nForce-590-SLI /mnt/lfs $ ls -lah /mnt/lfs/tools/glibc-2.22 -ddrwxr-xr-x 68 lfs lfs 4.0K Aug  5 01:42 /mnt/lfs/tools/glibc-2.22

如果我遗漏了任何内容,请告诉我,我只是在用头撞墙,试图理解这个补丁点以及如何让它做它应该做的事情。

答案1

您必须位于提取的 glibc-2.22 目录中(因此..在补丁路径中,它假设补丁位于上层目录中,在您的情况下为$LFS)。
您应该在$LFS/source目录中提取并构建,但这$LFS/tools并不是为了这个目的(它是为了保存临时系统)。

你真的需要仔细阅读第5.3章

答案2

需要先解压glibc tarball,这里省略了。

tar -xf glibc-2.22.tar.xz
cd glibc-2.22
patch -Np1 -i ../glibc-2.22-upstream_i386_fix-1.patch

祝你好运 :)

相关内容