Message264247
| 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 ccSolaris: lib{name}.so via crle, and lib{name}.* via ccGnu: lib{name}.* via ldconfig and ccAlready, 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 RPATHIssue 21622: Work without DT_SONAME |
|