Author martin.panter
Recipients Brian.Larsen, Daniel.Blanchard, Pau Tallada, amaury.forgeotdarc, belopolsky, jniehof, lukasz.langa, martin.panter, vinay.sajip, yaroslavvb
Date 2016-04-26.10:43:23
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1461667404.31.0.691073001991.issue9998@psf.upfronthosting.co.za>
In-reply-to
Content
Thanks Pau, for some reason I didn’t pick up the dylib OS X problem last time I looked at that link. This is a quick summary of the library names searched on different platforms:

Windows: {name} and {name}.dll, via %PATH%
OS X: lib{name}.dylib, {name}.dylib and {name}.framework/{name}, via dyld_find()
BSD: lib{name}.* via ldconfig (choose highest ABI version) and cc
Solaris: lib{name}.so via crle, and lib{name}.* via cc
Gnu: lib{name}.* via ldconfig and cc

Already, these cases seem to be half emulating the run-time linker and half the build-time linker. I don’t have a good answer about which is “better” (it would depend on the use case). But since we already have a mix, maybe changing towards run-time would not be such a problem as I first thought.

A half-cooked idea of mine is a simpler function that just accounts for common library naming conventions on various platforms, but does not extract sonames or spawn compilers. I think this could work with what seems to be a common use case of passing the result directly to CDLL(), which will do the real search. For the Windows and OS X cases, a loop might be required to attempt CDLL() with the different possibilities.

But I agree this is straying from the topic of this bug report. Perhaps I should accept that people want to find libraries by just the build-time name, but that are accessible at runtime.

More related reports about find_library() vs CDLL():
Issue 19317: Search Python’s RPATH
Issue 21622: Work without DT_SONAME
History
Date User Action Args
2016-04-26 10:43:24martin.pantersetrecipients: + martin.panter, vinay.sajip, amaury.forgeotdarc, belopolsky, lukasz.langa, jniehof, Brian.Larsen, yaroslavvb, Daniel.Blanchard, Pau Tallada
2016-04-26 10:43:24martin.pantersetmessageid: <1461667404.31.0.691073001991.issue9998@psf.upfronthosting.co.za>
2016-04-26 10:43:24martin.panterlinkissue9998 messages
2016-04-26 10:43:23martin.pantercreate