-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
dlopen() sonames #949
Comments
Do you have any guidance on how to accomplish this? |
I'm also unclear on what this means. Could you elaborate? |
Not saying it's easy :). e.g. when julia tries to open fftw, it searches for libfftw3_threads.so. However, on most Fedora user's systems libfftw3_threads.so is only installed if they installed fftw-devel. It is a symbolic link to the actual library: libfftw3_threads.so.3.3.2. That library also has a soname which indicates the version of the library, in this case libfftw3_threads.so.3, which is also a link to the library. This is installed on any machine that needs to use the fftw library. If a program is linked against a particular soname (libfftw3_threads.so.3) it will not work against a different version of the library. Library sonames are bumped to indicate API/ABI incompatibility with previous versions. I'm honestly not terribly familiar with the issues that come up with using dlopen() to open libraries instead of compile time linking, but in general one should reference the soname instead of the .so name. At least on Fedora using the .so would require installing many -devel packages for run-time use by julia that really shouldn't be needed. It is also causing problems building julia in the mock build environment because the .so library names generally don't make it into /etc/ld.so.cache. Hope that helps. |
I think he wants us to |
Oh, yeah, ok. Well, maybe we should just make openlib standard? |
Yeah, looks like openlib() does the right thing. |
Maybe, although openlib's a bit of a hack. Here's another option: 9ff08e9 (on the 'dlopen' branch). It adds |
This is an issue on Debian also, and is currently preventing me from proceeding on debian packages where the .so name is only provided by dev packages. |
julia really should dlopen() the appropriate soname for a given library. This will serve at least two purposes:
The text was updated successfully, but these errors were encountered: