bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why relink the library during make install?


From: Bruno Haible
Subject: Re: Why relink the library during make install?
Date: Wed, 24 Jul 2002 21:33:16 +0200 (CEST)

Alfred Szmidt writes:

> The GNU Coding Standard is quite specific that no re-compilation should
> be done when supplying `prefix' to `make install'.
> 
> (standards) Directory Variables:
> ...
>      Running `make install' with a different value of `prefix' from the
>      one used to build the program should _not_ recompile the program.

This only means that the one who does

   configure --prefix=/A
   make
   make install prefix=/B

cannot expect that auxiliary files (in lib, share, doc, etc) will
be found. The "make" process has no chance to put the pathnames
/B/lib, /B/share etc. into the executables and libraries because it
doesn't know about /B at that moment. In most cases, the installed
package will not run.

> If gettext doesn't follow this, then it should be fixed at once.

It cannot be fixed, because of the way shared library dependencies
work.

> Guess why in the world people using prefix=... in the 'make install'
> at all?

a. Because they don't know about DESTDIR.
b. Because they think that all packages are automatically relocatable,
   as if they were single executables with no dependencies.

>     Bruno> In this case you can should simply use
>     Bruno> configure 
> --prefix=/auto/insbu-cnstools/kit/gettext-0.11.3/auto/insbu-cnstools
> 
> That will not work because we will have multiple bin and mutliple
> lib, etc:
> 
>     /auto/insbu-cnstools/kit/gettext-0.11.3/auto/insbu-cnstools/bin
>     /auto/insbu-cnstools/kit/emacs-21.2/auto/insbu-cnstools/bin

You said that you have a post-installation process which whill make
symlinks from /somewhere/bin to these various bin directories. Where
is then the problem?

>     Bruno> This is necessary because of the way shared library
>     Bruno> dependencies work.
> 
> But this has already been taken care in the configure phase, the
> 'make' already built the stuff with the proper settings.

On some operating systems, it cannot build the stuff completely until
the shared libraries have been installed. This is why "make install"
must relink.

Bruno



reply via email to

[Prev in Thread] Current Thread [Next in Thread]