-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix libsvm name for Darwin #221
base: master
Are you sure you want to change the base?
Conversation
On macOS, shared libraries are expected to be installed with the naming convention lib$NAME.$SOVERSION.dylib We also prefix the library install name with `@rpath` to indicate to the dynamic linker that it should use RPATH to look for `libsvm`. Without this, the dynamic linker will only search the calling process' current working directory, which will, in general, not contain `libsvm`.
We are not sure whether the change affects compatibility with previous versions on macOS. |
This does affect compatibility, so it can/should probably wait until you bump
Regarding naming, it's not so much an error, but I think it is a bug to not be following platform naming conventions for shared libraries. Merging this patch also means that downstream packagers don't have to fix up the file name and install name for you. See:
Homebrew, MacPorts, and Nix are probably the three most widely used package managers on macOS at the moment, and they all rename It seems to me that there would be less duplication of effort (and therefore more efficient) if this was corrected here upstream instead. |
Regarding the install name, what kind of details were you looking for? In its current state you can only link with With the |
Thanks for the information. |
On macOS, shared libraries are expected to be installed with the naming
convention
We also prefix the library install name with
@rpath
to indicate to thedynamic linker that it should use RPATH to look for
libsvm
. Withoutthis, the dynamic linker will only search the calling process' current
working directory, which will, in general, not contain
libsvm
.