[lfs-support] LFS 7.10 toolchain problem (WAS LFS 7.10 - libreadline.so.6 not found error - when running make in 6.40 Perl-5.24.0)

Thanos Baloukas baloukasthan at sch.gr
Fri Apr 6 04:25:03 PDT 2018


On 06/04/2018 10:51 πμ, Νίκος Λαμπόβας wrote:
> 
> 
> On 5 April 2018 at 19:12, Thanos Baloukas <baloukasthan at sch.gr 
> <mailto:baloukasthan at sch.gr>> wrote:
> 
>     On 05/04/2018 12:38 μμ, Νίκος Λαμπόβας wrote:
> 
>         On 25 February 2018 at 11:35, Thanos Baloukas
>         <baloukasthan at sch.gr <mailto:baloukasthan at sch.gr>
>              On 02/25/2018 10:58 AM, Νίκος Λαμπόβας wrote:
> 
>                  Thank you for the quick answer.
>                  As said in the email subject the book is LFS, the
>         version is
>                  7.10 and the Host is a virtual machine with Ubuntu
>         12.04 LTS.
>                  The Oracle VM Virtualbox is running on Windows 10.
> 
>     ...
>     snip
>     ...
>     Firstly, is there a reason you are installing the outdated LFS 7.10
>     and not the latest 8.2?
> 
> 
>      i started lfs when lfs 7.10 was the new version but i postponed it 
> in order to build it parallel to my OS course of NTUA
> 
>     Did you check carefully with version-check.sh
> 
>              bash, version 4.2.25(1)-release
> /bin/sh -> /bin/bash
> Binutils: (GNU Binutils for Ubuntu) 2.22
> bison (GNU Bison) 2.5
> /usr/bin/yacc -> /usr/bin/bison.yacc
> bzip2,  Version 1.0.6, 6-Sept-2010.
> Coreutils:  8.13
> diff (GNU diffutils) 3.2
> find (GNU findutils) 4.4.2
> GNU Awk 4.1.1, API: 1.1 (GNU MPFR 3.1.0-p3, GNU MP 5.0.2)
> /usr/bin/awk -> /usr/bin/gawk
> gcc (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3
> g++ (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04) 4.7.3
> (Ubuntu EGLIBC 2.15-0ubuntu10.6) 2.15
> grep (GNU grep) 2.10
> gzip 1.4
> Linux version 3.13.0-32-generic
> m4 (GNU M4) 1.4.16
> GNU Make 3.81
> patch 2.6.1
> Perl version='5.14.2';
> GNU sed version 4.2.1
> tar (GNU tar) 1.26
> makeinfo (GNU texinfo) 4.13
> xz (XZ Utils) 5.1.0alpha
> g++ compilation OK
> 

Not sure about EGLIBC, the rest look good.
LFS-7.10 had library-check.sh too.

> 
>         I have built lfs all over again until "6.40 perl" for watching
>         all warnings and possible package errors.
>         The commands you mentioned on 'Creating Essential Files and
>         Symlinks' were executed successfully.
>         Also there is no reference of 'tools' in gcc specs file on '
>         Adjusting the toolchain' and all debug messages
>         for program interpreter are mention /lib/ld-linux.so.2 and not
>         /tools/lib/ld-linux.so.2.
>         A strange thing i have noticed is that all binaries of the
>         packages before 6.17 GCC-6.2.0, have correct paths
>         on ldd command. For example:
> 
>             ldd /usr/bin/file
>               linux-gate.so.1 (0xb773a000)
>               libmagic.so.1 => /usr/lib/libmagic.so.1 (0xb7710000)
>               libz.so.1 => /lib/libz.so.1 (0xb76f5000)
>               libc.so.6 => /lib/libc.so.6 (0xb753e000)
>               /lib/ld-linux.so.2 (0xb773b000)
> 
>         But after GCC-6.2.0 all the libraries point to 'tools'. For example:
> 
>             ldd /bin/bzip2
>               linux-gate.so.1 (0xb7747000)
>               libbz2.so.1.0 => not found
>               libc.so.6 => /tools/lib/libc.so.6 (0xb758e000)
>               /tools/lib/ld-linux.so.2 (0xb7748000)
> 
>         When i execute "LD_DEBUG=libs ldd /usr/bin/file" a binary
>         compiled before GCC-6.2.0 i find that it searches
>         in the beginning the system path that refers to a directory
>         relative to "tools".
> 
>         LD_DEBUG=libs ldd /usr/bin/file
>                11241:    find library=libdl.so.2 [0]; searching
>                11241:     search cache=/tools/etc/ld.so.cache
>                11241:     search
>         path=/tools/lib/tls/i686/sse2:/tools/lib/tls/i686:/tools/lib/tls/sse2:/tools/lib/tls:/tools/lib/i686/sse2:/tools/lib/i686:/tools/lib/sse2:/tools/lib 
>                 (system search path)
>                11241:      trying file=/tools/lib/tls/i686/sse2/libdl.so.2
>                11241:      trying file=/tools/lib/tls/i686/libdl.so.2
>                11241:      trying file=/tools/lib/tls/sse2/libdl.so.2
>                11241:      trying file=/tools/lib/tls/libdl.so.2
>                11241:      trying file=/tools/lib/i686/sse2/libdl.so.2
>                11241:      trying file=/tools/lib/i686/libdl.so.2
>                11241:      trying file=/tools/lib/sse2/libdl.so.2
>                11241:      trying file=/tools/lib/libdl.so.2
>                11241:
>                11241:    find library=libc.so.6 [0]; searching
>                11241:     search cache=/tools/etc/ld.so.cache
>                11241:     search path=/tools/lib        (system search path)
>                11241:      trying file=/tools/lib/libc.so.6
>                11241:
>                11241:    calling init: /tools/lib/libc.so.6
>                11241:    calling init: /tools/lib/libdl.so.2
>                11241:    initialize program: /bin/bash
>                11241:    transferring control: /bin/bash
>                11241:
>                11241:    find library=libnss_files.so.2 [0]; searching
>                11241:     search cache=/tools/etc/ld.so.cache
>                11241:     search path=/tools/lib        (system search path)
>                11241:      trying file=/tools/lib/libnss_files.so.2
>                11241:
>                11241:    calling init: /tools/lib/libnss_files.so.2
>                11244:    calling fini: /bin/bash [0]
>                11244:    calling fini: /tools/lib/libdl.so.2 [0]
>                11244:    calling fini: /tools/lib/libnss_files.so.2 [0]
>                11244:
>                11245:    find library=libmagic.so.1 [0]; searching
>                11245:     search cache=/etc/ld.so.cache
>                11245:      trying file=/usr/lib/libmagic.so.1
>                .
>                .
>                .
> 
>         How can i fix this?
> 
>     What is the output of
>     ls -l /usr/bin/ldd
>     and
>     echo $PATH
>     in chroot? If /tools/bin precedes /usr/bin you are executing
>     /tools/bin/ldd
> 
>      This is the output:
> root:/build_lfs_scripts# ls -l /usr/bin/ldd
> -rwxr-xr-x 1 root root 5858 Mar  9 16:50 /usr/bin/ldd
> 
> root:/build_lfs_scripts# echo $PATH
> /bin:/usr/bin:/sbin:/usr/sbin:/tools/bin
> 
> 
>     If the  above are ok and you are absolutely sure that ALL the sanity
>     checks on 6.10 Adjusting the Toolchain 
> 
>       this is the output:
>             '/tools/bin/ld' -> '/tools/bin/ld-old'
> '/tools/i686-pc-linux-gnu/bin/ld' -> '/tools/i686-pc-linux-gnu/bin/ld-old'
> '/tools/bin/ld-new' -> '/tools/bin/ld'
> '/tools/i686-pc-linux-gnu/bin/ld' -> '/tools/bin/ld'
>        [Requesting program interpreter: /lib/ld-linux.so.2]
> /usr/lib/crt1.o succeeded
> /usr/lib/crti.o succeeded
> /usr/lib/crtn.o succeeded
> #include <...> search starts here:
>   /usr/include
> SEARCH_DIR("=/tools/i686-pc-linux-gnu/lib32")
> SEARCH_DIR("/usr/lib")
> SEARCH_DIR("/lib")
> SEARCH_DIR("=/tools/i686-pc-linux-gnu/lib");
> attempt to open /lib/libc.so.6 succeeded
> found ld-linux.so.2 at /lib/ld-linux.so.2
> removed 'dummy.c'
> removed 'a.out'
> removed 'dummy.log'
> 
>       there is a reference of tools here but is accepted according to 
> this log
> http://lfs.phayoune.org/lfs/build-logs/8.1-rc1/pentium4/logs/077-adjusting
>        (on version 7.10 there is no log for 6.10 section)
> 
>       Also the specs file for 6.10 section in the dir ( 
> /tools/lib/gcc/i686-pc-linux-gnu/6.2.0/specs) has this entry for the linker
>           
> %{muclibc:/lib/ld-uClibc.so.0;:%{mbionic:/system/bin/linker;:%{mmusl:/lib/ld-musl-i386.so.1;:/lib/ld-linux.so.2}}}
>       which is correct but for the gcc in 6.17 there's no such 
> modification and no specs file.
> 

Not sure about that. As I wrote above I'm not even sure your host's libc
meets the requirements.

> 
>     and 6.17 GCC-6.2.0 were/are
>     as the book says,
> 
>             /usr/lib/gcc/i686-pc-linux-gnu/6.2.0/../../../crt1.o succeeded
> /usr/lib/gcc/i686-pc-linux-gnu/6.2.0/../../../crti.o succeeded
> /usr/lib/gcc/i686-pc-linux-gnu/6.2.0/../../../crtn.o succeeded
> #include <...> search starts here:
>   /usr/lib/gcc/i686-pc-linux-gnu/6.2.0/include
>   /usr/local/include
>   /usr/lib/gcc/i686-pc-linux-gnu/6.2.0/include-fixed
>   /usr/include
> SEARCH_DIR("/usr/i686-pc-linux-gnu/lib32")
> SEARCH_DIR("/usr/local/lib32")
> SEARCH_DIR("/lib32")
> SEARCH_DIR("/usr/lib32")
> SEARCH_DIR("/usr/i686-pc-linux-gnu/lib")
> SEARCH_DIR("/usr/local/lib")
> SEARCH_DIR("/lib")
> SEARCH_DIR("/usr/lib");
> attempt to open /lib/libc.so.6 succeeded
> found ld-linux.so.2 at /lib/ld-linux.so.2
> removed 'dummy.c'
> removed 'a.out'
> removed 'dummy.log'
>
Seems good.

One last thing I noted is your bash prompt
 > root:/build_lfs_scripts#
which indicates that you scripted the build. That has benefits, but
did you ensure that your scripts exit when a command fails, putting
'set -e' (without quotes) after #!/bin/bash? If using pipes,
'set -o pipefail' is needed too.

I'm sorry I can't help you more to debug this.
I didn't install LFS-7.10 and haven't build on x86 for a long time.
Good luck with your course.

Καλή Ανάσταση! Happy Easter!

PS: Sorry for the quoting mess.

-- 
Thanos


More information about the lfs-support mailing list