Hi Pierre,

On Fri, Feb 21, 2020 at 11:01 AM Pierre Labastie via lfs-dev
<[email protected]> wrote:
>
> 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:
> >> 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.

But, pay attention to the following passage: "Searching -rpath in this
way [(i.e., any directories specified by -rpath options)] is only
supported by [...] cross linkers which have been configured with the
--with-sysroot option."  It means that, if the `--with-sysroot' option
is not given to configure binutils, the resulting ld will ignore any
-rpath given in the command line.  This means that not specifying the
`--with-sysroot' option is indeed a good idea because any path
specified using the `-rpath' option will simply be ignored, keeping
the /tools isolated from the build system.

> The --with-sysroot switch has not effect if ld is called without -rpath 
> option...

That's not true for the problem at hand because the `--with-sysroot'
switch indeed has an effect as already reported in the other thread
despite the absent of the `-rpath' option in the linking command.
And, the problem at hand uses an ld for a static linking to obtain the
perl executable because both the option `-shared' and *.so files are
not specified in the linking command, no?

> 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.

Keeping in mind that the `-rpath' option has an effect if the option
`--with-sysroot' is given when configuring binutils, the main reason
for using the option `--with-sysroot' in the first place cannot be the
`-rpath' option as you described.

> Pierre

-- 
Best regards,
Tadeus
-- 
http://lists.linuxfromscratch.org/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to