Le 21/02/2020 à 05:33, Bruce Dubbs via lfs-dev a écrit : > On 2/20/20 10:09 PM, Xi Ruoyao via lfs-dev wrote: >> On 2020-02-20 22:05 -0600, Bruce Dubbs via lfs-dev wrote: >>> On 2/20/20 6:57 PM, Xi Ruoyao via lfs-dev wrote: >>>> On 2020-02-21 01:54 +0100, Tadeus Prastowo via lfs-dev wrote: >>>>> Hello, >>>>> >>>>> To quote >>>>> http://www.linuxfromscratch.org/lfs/view/development/chapter05/binutils-pass2.html >>>>> >>>>> : >>>>> >>>>> --with-sysroot >>>>> The sysroot feature enables the linker to find shared objects which >>>>> are required by other shared objects explicitly included on the >>>>> linker's command line. Without this, some packages may not build >>>>> successfully on some hosts. >>>>> >>>>> End quote. >>>>> >>>>> As described in another e-mail at >>>>> http://lists.linuxfromscratch.org/pipermail/lfs-dev/2020-February/073506.html, >>>>> >>>>> the `--with-sysroot' option used to configure the second binutils will >>>>> refer to a non-existent directory, such as >>>>> /LFS-tools/x86_64-pc-linux-gnu/sys-root/. In other words, it cannot >>>>> be the case that the linker (ld) will "find shared objects which are >>>>> required by other shared objects explicitly included on the linker's >>>>> command line" in the non-existent directory. While it is true that >>>>> "without this, some packages may not build successfully on some hosts" >>>>> (e.g., the first build of Perl), the description of the >>>>> `--with-sysroot' can be improved as follows: >>>>> >>>>> This option will prevent the linker from looking in the default places >>>>> in the build system (e.g., by reading the file /etc/ld.so.conf) by >>>>> forcing the linker to look only in places within the non-existent >>>>> default sysroot directory /tools/$LFS_TGT/sys-root. If this option is >>>>> not given and the linker reads some working ld.so.conf of the build >>>>> system, the linker will produce objects that are linked to the build >>>>> system's library, not to the libraries built within the /tools >>>>> directory, which defeats the effort of having a clean build. >>>>> >>>>> What do you think? Thanks. >>>> >>>> I agree. This also confused me when I was doing the Chinese translation. >>> >>> I think we can improve the wording here, bu tnote that the linker >>> actually looks at ld.so.cache, not ld.so.conf. Only the ldconfig >>> command looks at ld.so.conf. >> >> No. The linker (/usr/bin/ld) looks at ld.so.conf, but the dynamic linker >> (/lib/ld-linux-x86-64.so.2) looks at ld.so.cache. > > You're right. I got the tools mixed up. Thanks. > > -- Bruce > >>> I'll use the above to try to reword the explanation of the >>> --with-sysroot option.
Actually, the main use of the --with-sysroot switch is that it changes the behavior of ld with respect to the -rpath switch. From man ld: The linker uses the following search paths to locate required shared libraries: 1. Any directories specified by -rpath-link options. 2. Any directories specified by -rpath options. The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the executable and used at runtime, whereas the -rpath-link option is only effective at link time. Searching -rpath in this way is only supported by native linkers and cross linkers which have been configured with the --with-sysroot option. So I think "-rpath" should appear somewhere in this explanation. The --with-sysroot switch has not effect if ld is called without -rpath option... Let me try with my non-native English: This option will change the linker behavior when it is run with a command containing the -rpath switch: any linked library will be searched into the path specified by -rpath before searching other locations such as /etc/ld.so.conf. Note that since the default sysroot location does not exist, it does not intervene in the searching process. Without the --with-sysroot option, the -rpath path is not used for searching dependent libraries, with the risk of finding host libraries, which defeats the effort of having a clean build. Pierre -- http://lists.linuxfromscratch.org/listinfo/lfs-dev FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page