soloud icon indicating copy to clipboard operation
soloud copied to clipboard

SDL2 backend: dlopen problems on Linux (not using SONAME with dlopen)

Open eliasdaler opened this issue 4 years ago • 1 comments

Hello I'm using soloud with SDL2 compiled as a shared library on Linux (Ubuntu 20.04 to be exact) When linking with SDL2 using its CMake, I get a link with libSDL2-2.0.so.0 which is a symlink to libSDL2-2.0.so.0.14.0

This causes dlopen in sdl2_openDll() function to fail, as it fails to find libSDL2.so or SDL2.so that it searches for. However, the fix is pretty simple (I can provide the PR if I got this right):

static void * sdl2_openDll()
{
	void * res;
	res = dlopen("/Library/Frameworks/SDL2.framework/SDL2", RTLD_LAZY);
	if (!res) res = dlopen("SDL2.so", RTLD_LAZY);
	if (!res) res = dlopen("libSDL2.so", RTLD_LAZY);
	if (!res) res = dlopen("libSDL2-2.0.so.0", RTLD_LAZY);  // <---- need to add this line
    return res;
}

Also please see this post from Ryan C. Gordon (one of the main devs of SDL) saying that "libSDL2-2.0.so.0" is the SONAME that should be used. Also see:

$ objdump -p third_party/sdl/libSDL2-2.0.so | grep SONAME
  SONAME               libSDL2-2.0.so.0

eliasdaler avatar Aug 05 '21 21:08 eliasdaler

PR would be nice, even for small things like this =)

jarikomppa avatar Nov 15 '21 18:11 jarikomppa