首页 > 解决方案 > lfs gcc 无法编译

问题描述

我正在尝试根据 Linux From Scratch 制作 gcc。但我遇到了一个错误。
错误屏幕截图

可能有用的附加信息:
0. lfs 手册版本 7.7-systemd
1. 我正在运行 ubuntu linux uname -r : 4.4.0-142-generic 2. 我已经检查了版本和库

 bash, version 4.3.11(1)-release
 /bin/sh -> /bin/dash
 Binutils: (GNU Binutils for Ubuntu) 2.24
 bison (GNU Bison) 3.0.2
 /usr/bin/yacc -> /usr/bin/bison.yacc
 bzip2,  Version 1.0.6, 6-Sept-2010.
 Coreutils:  8.21
 diff (GNU diffutils) 3.3
 find (GNU findutils) 4.4.2
 GNU Awk 4.0.1
 /usr/bin/awk -> /usr/bin/gawk
 gcc (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
 g++ (Ubuntu 4.8.4-2ubuntu1~14.04.4) 4.8.4
 (Ubuntu EGLIBC 2.19-0ubuntu6.14) 2.19
 grep (GNU grep) 2.16
 gzip 1.6
 Linux version 4.4.0-142-generic (buildd@lcy01-amd64-006) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.4) ) #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019
 m4 (GNU M4) 1.4.17
 GNU Make 3.81
 GNU patch 2.7.1
 Perl version='5.18.2';
 sed (GNU sed) 4.2.2
 tar (GNU tar) 1.27.1
 makeinfo (GNU texinfo) 5.2
 xz (XZ Utils) 5.1.0alpha
 g++ compilation OK
 ibgmp.la: not found
 libmpfr.la: not found
 libmpc.la: not found

这是我正在运行的代码

../gcc-4.9.2/configure                             \
    --target=$LFS_TGT                              \
    --prefix=/tools                                \
    --with-sysroot=$LFS                            \
    --with-newlib                                  \
    --without-headers                              \
    --with-local-prefix=/tools                     \
    --with-native-system-header-dir=/tools/include \
    --disable-nls                                  \
    --disable-shared                               \
    --disable-multilib                             \
    --disable-decimal-float                        \
    --disable-threads                              \
    --disable-libatomic                            \
    --disable-libgomp                              \
    --disable-libitm                               \
    --disable-libquadmath                          \
    --disable-libsanitizer                         \
    --disable-libssp                               \
    --disable-libvtv                               \
    --disable-libcilkrts                           \
    --disable-libstdc++-v3                         \
    --enable-languages=c,c++

更新
这是第 5 章中构建的第一个工具链,我解压了 gcc 源代码并使用了这些新的源代码。

标签: ubuntulinux-from-scratch

解决方案


首先,我强烈建议使用当前版本的LFS Book(截至撰写本文时为 9.0)。您使用的 7.7 版现在已经快 5 年了。

其次,您的主机系统(Ubuntu)不符合 LFS 要求:

  1. /bin/sh应该是一个链接/bin/bash。在您的情况下,它链接到/bin/dash. 简单的解决方法是手动更改它。作为根:
rm /bin/sh
ln -sv /bin/bash /bin/sh
  1. 您的主机系统使用 EGLIBC 而不是 GLIBC。EGLIBC 是为嵌入式设备设计的,试图与标准 glibc 兼容,自 2014 年初https://en.wikipedia.org/wiki/Embedded_GLIBC起已停产。不幸的是,我不知道是否可以在 Ubuntu 上将 EGLIBC 更改为 GLIBC(安装 glibc 然后删除 eglibc 可以工作)。

推荐阅读