Am Montag, 3. Oktober 2011, 07:59:45 schrieb Clinton Stimpson:
> On Oct 3, 2011, at 3:25 AM, Rolf Eike Beer wrote:
> > Am Samstag, 1. Oktober 2011, 22:51:55 schrieb Clinton Stimpson:
> >> On Oct 1, 2011, at 4:48 PM, Rolf Eike Beer wrote:
> >>> On Sa.,   1. Okt. 2011 18:40:09 CEST, Alexander Neundorf
> > 
> > <neund...@kde.org> wrote:
> >>>> If library bar internally uses symbols from foo,
> >>>> it needs to link against foo.
> >>> 
> >>> Correct.
> >>> 
> >>>> But if bar doesn't expose symbols from foo in its
> >>>> interface, and my executable   hello links against bar, it doesn't
> >>>> also
> >>>> have to be linked against foo. This saves startup time and other
> >>>> things.
> >>>> Packagers also like that.
> >>> 
> >>> No, you got something wrong here. Packagers hate that. That's
> >>> exactly
> >>> the reason why e.g. Fedora and others introduced -Wl,no-unneeded (or
> >>> how that's called) in their default linker flags.
> >>> 
> >>> If your hello needs foo and bar, and is only linked to bar because
> >>> that
> >>> one is already linked against foo, that your package will not work
> >>> any
> >>> longer if you replace foo 1.0 with foo 1.1 which is totally binary
> >>> compatible but doesn't need foo internally any longer because your
> >>> hello then misses symbols on startup. This is called unterlinking of
> >>> hello and should be avoided whereever possible.
> >>> 
> >>> The opposite is overlinking and that was what I tried to avoid: my
> >>> hello did not need any symbols from foo itself, so I wanted to get
> >>> rid of them (which worked by forcing the implicit dependencies to
> >>> empty). But CMake still did not want to allow me to export the bar
> >>> target without also exporting foo even if the linkage to foo was
> >>> only an internal detail and the user was not even allowed to use
> >>> foo directly.
> >> 
> >> Can you consider this example as a demonstration for why cmake wants
> >> information about foo in the exports file even though its an internal
> >> detail?
> > 
> > Yes, I can. This wouldn't have been relevant for me, as all the
> > libraries were installed to the same directory.
> 
> Did you see the second example in another email shortly after this one,
> where the libraries were in the same directory? Using some newer Linux
> distros or the --enable-new-dtags linker flag shows the issue even if the
> libraries are in the same directory. I wonder if there is another way for
> cmake to get the information it needs for the export file without giving
> the internal targets.

Well, for the KDE part I let Alex wrestle with what needs to be exported. For 
my original example I do not really care anymore as this code isn't mine 
anymore.

Regarding the --enable-new-dtags this is basically a new format to store the 
same stuff in ELF as far as I understand what I can find. So the question is 
why 
enabling this changes behaviour?

Eike

Attachment: signature.asc
Description: This is a digitally signed message part.

--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to