Question

I have a linux shared library (.so) compiled with a specific version of libc (GLIBC2.4) and I need to use it on a system with different version of libc. I do not have sources for the library in question so I cannot recompile for the new system. Is it somehow possible to change the dependencies in that library to a different libc?

Was it helpful?

Solution

If you need the .so on a system with an older glibc, you would need the source code and recompile/relink it with the older glibc. The alternative is to install the required glibc on the old system in a non-default location and adjust the LD_LIBRARY_PATH for the executable that needs this .so

If there's a newer glibc rather, it should normally not be a problem as glibc tend to be backwards compatible.

OTHER TIPS

Unless your library really uses interfaces that changed (unlikely), you can just hexedit the references to versions in the resulting .so file. They're all text anyway.

Best you can do is compile the old glibc version for your system and then build your application with that glibc and your shared library. Ugly though ...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top