Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Apr 1995 23:24:47 -0600
From:      nate@sneezy.sri.com (Nate Williams)
To:        current@FreeBSD.org
Subject:   Announce: Linker changes which broke shared C++/F77 code backed out
Message-ID:  <199504070524.XAA06417@trout.sri.MT.net>

next in thread | raw e-mail | index | archive | help
Due to some underlying dependance of the linker on the previous
behavior, the change I made to enforce command line linking has been
backed out.  This should (hopefully?) fix the problems people were
having with C++ programs.

However, it should be noted that as it stands currently, if you define a
symbol in a static library it will be preferred over the version that
exists in a shared library, even if it precedes it on the link line.

For example, if you link a program with against -lcompat(static by
default) and -lgnuregex(shared by default), as the code is now the regex
routines will be pulled from the static library and not the shared
library since they both define symbols from regex and friends.

I'm hoping to change this behavior, but in the mean-time be aware of
this 'feature' of the linker, and if you see any weird behavior in your
binaries or are concerned, you're best bet is to compile the program
completely static which avoids these problems.

On a not so positive note, this change doesn't appear to fix the
problems folks are having with Lites.  This seems to be a dependance on
changes that were made to the run-time loader, and I'm hoping to track
this whole mess down as time permits.



Nate




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199504070524.XAA06417>