Error when building GCC 4.7.1 on hppa2.0-unknown-linux-gnu

Jonathan Wakely jwakely.gcc@gmail.com
Thu Jul 5 15:17:00 GMT 2012


On 5 July 2012 15:53, Vincent Lefevre wrote:
> On 2012-07-05 13:37:11 +0100, Jonathan Wakely wrote:
>> On 5 July 2012 13:21, Vincent Lefevre wrote:
>> > On 2012-07-05 15:07:53 +0300, Kai Ruottu wrote:
>> >> The '--with-*' options only advice the compile time linker to find
>> >> the right libraries but don't do anything for the runtime
>> >> situation...
>> >
>> > Ah, OK. Why isn't this fixed, e.g. by adding --with-* paths to
>> > the runpath of the generated executables needed for the build?
>>
>> The --with-xxx options only affect -I and -L
>>
>> GCC never adds runpaths to executables by default.  This is also a FAQ:
>> http://gcc.gnu.org/faq.html#rpath
>
> No, this FAQ covers the executables that are generated for the user
> by the build (e.g. when the user runs the gcc command), not those
> used for the build.

The GCC build system doesn't set an RPATH in GCC for the same reason
GCC doesn't set an RPATH in the executables it produces.  It's a GCC
policy.

When bootstrapping GCC is built by GCC, so an answer explaining why
GCC doesn't set RPATH in executables produced by GCC is entirely
relevant.

> For instance, to build MPFR when using --with-gmp=GMP_DIR, setting
> LD_LIBRARY_PATH is not necessary for the build and "make check".
> But after installing MPFR, if the user wants to use it and that
> GMP can be found in GMP_DIR, the user may need to set up
> LD_LIBRARY_PATH.

GCC is different.

Feel free to suggest changing that, but until that happens the docs
reflect reality.


>> > I'd say that the goal of the --with-* options is to provide the
>> > paths when they are not in the default environment (including
>> > the runtime linker).
>>
>> What if the location of those libs during bootstrap is not the same as
>> the location will be when the installed compiler is used?
>
> Doesn't LD_LIBRARY_PATH have the precedence?

There are several ways to tell the runtime loader how to find the
libraries, users can decide which to use.

If they use the DT_RPATH section then that has precedence over
LD_LIBRARY_PATH. If they use LD_LIBRARY_PATH then it has precedence
over DT_RUNPATH or ldconfig.

The --with-xxx options don't use any method. You can use LD_RUN_PATH
or LD_LIBRARY_PATH during the build to control it if you want to.  I
consider it much simpler to install the support libs in standard
locations or to build them in-tree, and the problem simply doesn't
exist, which is the best option for at least 90% of people building
GCC.


> Or if the locations
> of the libraries have definitely changed, can't the user update
> the rpath with a utility like chrpath?

That's not widely available.

You asked where the problem came from, so I pointed you to the
relevant documentation which answers the question and says how to
avoid the problem. Now you're arguing about whether it should be that
way, which is a different discussion and not one I'm interested in
right now.



More information about the Gcc-help mailing list