On 19 May 2010 at 20:35, Aleksej Saushev wrote:
| > I believe that for us, the 'winning' change was
| >
| > #ifdef OPENMPI
| > dlopen("libmpi.so.0", RTLD_GLOBAL | RTLD_LAZY);
| > #endif
| >
| > after which we were golden. *Bsd may well be different. Sorry if cannot be
| > of more help here. But symbol visibility and loading should be problem
| > common to *Bsd and may get pointes from other projects.
|| It isn't BSDs that are "different," this is wrong even on linux-based systems,
| because it may pick _wrong_ library, the one that wasn't present neither
| during building nor installation time, and the compatibility of which
| wasn't checked. The choice of using explicit path to libraries and
| interpreters isn't accidential, it is conscious. It avoids some catches,
| and it allows at the same time simultaneous usage of software using
| different versions of the same library (that is with the same SONAME,
| only built differently) _without_tricky_plays_ with rtld.
Maybe, maybe not. That is a very technical point, and many people have very
strong views on both sides of the aisle on this.
To take one example I sometimes resolve to usng rpath information to embed a
path to shared library (such as libR.so which is typically in a directory not
known to ld.so) and even that is frowned upon by many.
This is just to say that this scheme worked reliably (with or without rpath)
for me for many years so I will just say that I do not share your point of
view here. But this is unlikely to be a fruitful discussion so I stop now.
--
Regards, Dirk