On November 10, 2018 9:00:32 AM CST, Xi Ruoyao via lfs-dev <lfs-dev@lists.linuxfromscratch.org> wrote: >On 2018-11-10 13:13 +0000, John Frankish via lfs-dev wrote: >> > > Ref: >> > > >> > > Linux From Scratch - Version SVN-20181106 Chapter 6. Installing >> > > Basic >> > > System Software 6.9. Glibc-2.28 >> > > >> > > The instructions mention: >> > > >> > > libc_cv_slibdir=/lib >> > > This variable sets the correct library for all systems. We do >> > > not want lib64 to be used. >> > > >> > > ..but after installation I needed the following sed for this to >> > > be >> > > true >> > > >> > > sed -i 's@lib64/ld-linux-x86-64.so.2@lib/ld-linux-x86-64.so.2@' >> > > /usr/bin/ldd >> > > >> > > >> > We still have a /lib64 directory, and two links: >> > ---------- >> > ld-linux-x86-64.so.2 -> ../lib/ld-linux-x86-64.so.2 >> > ld-lsb-x86-64.so.3 -> ../lib/ld-linux-x86-64.so.2 >> > ---------- >> > Those are mandated by LSB. Also, when running the sanity check at >> > the end >> > of "6.10-ajusting the toolchain", you'll see "/lib64/ld-linux-x86- >> > 64.so.2" is >> > encoded in elf executables. >> > >> > So ldd should run without the proposed sed. Note that it does no >> > harm. >> > >> > Now, setting libc_cv_slibdir allows the build machinery of other >> > packages >> > to use /lib for installing libraries (well, at least when they use >> > autoconf. >> > When installing cmake, a few files need a sed for preventing >> > installation in /lib64) >> > >> If LSB mandates that those links are present, does it allow for the >> actual files to be in /lib and the symlinks to be in /lib64? > >I'm not familiar with LSB but I think this is allowed.
https://wiki.linuxfoundation.org/lsb/start > >> If this is the case, then the loader can be in /lib (with a couple of >> small adjustments to the gcc build) and anybody who does not have a >> need to be LSB compliant can just delete /lib64, /usr/lib64 and >> things will still work - this is in fact what I have done. It's good to learn. >That's not just a LSB incompliance. The path to dynamic linker is hard >coded in ELF header. An unmodified GCC generate executables with the >dynamic linker "/lib64/ld-linux-x86-64.so.2". So your system will ONLY >run dynamic linked programs produced by your (modified) GCC. If you >want to use ANY binaries from other system you have to hack these >binaries (it's absolutely possible but I didn't tried), or create the >correct symlink. >I think maybe we should explain these issues in the book (I've >explained them for Chinese audiences in my LFS Chinese translation). That would be good. I had thought some of this is covered, but it should probably be expanded in whatever way we can explain. Also of note, should be the FHS. http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html --DJ -- Sent from my Android device with K-9 Mail. Please excuse my brevity. -- http://lists.linuxfromscratch.org/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page