linuxdeployqt icon indicating copy to clipboard operation
linuxdeployqt copied to clipboard

Symlink libraries to allow loading shared objects on runtime

Open Zaraka opened this issue 5 years ago • 3 comments

I have problem while loading shared objects on runtime. One of the libraries is trying to load libproj.so and fails, because there is missing symlink from libproj.so -> libproj.so.xx This can be fixed by deploying in two passes and manually symlinking libproj.so -> libproj.so.xx in /lib directory. But it would be much more convenient if linuxdeployqt copies all those symlinks from appropriate paths to /lib on its own

Zaraka avatar Apr 23 '19 07:04 Zaraka

Why is the library trying to load libproj.so rather than libproj.so.xx? Couldn't that be changed in the library?

We use the ldd tool to determine the libraries that need to be deployed. The ldd tool has no knowledge of any symlinks that may or may not exist.

probonopd avatar Apr 23 '19 17:04 probonopd

Beats me, I guess the library is trying to be loaded separately by other dependencies. The point is, libproj.x.y is linked dynamically and included correctly, but the generic symlinks are not.

Well AFAIK those library symlinks always reside in the same directory just with generic name without version number. Linuxdeployqt can check for them manualy. Does this sound way too hacky?

Zaraka avatar Apr 23 '19 21:04 Zaraka

Could be done, but it would increase code complexity and complexity of the resulting AppDir/AppImage and I am hesitant to make things more complex to handle some rare edge cases like this one, which can be handled by running linuxdeployqt twice.

Let's keep this issue open and see whether others are running into this issue, too.

probonopd avatar Apr 24 '19 05:04 probonopd