-
Notifications
You must be signed in to change notification settings - Fork 10
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
Find a reliable methd of resolving the glibc version #61
Comments
Proposed solution:
Reference |
A bit hackish, but searching with |
We used that method in AppRun v1 but it failed when new symbols get added like between glibc 2.30 and 2.32. |
How can that be? Did they add symbols without increasing the GLIBC_ number? |
They added other symbols that are not versioned with the |
Ouch. Just as an idea, if we have two libs with the same highest |
I have been comparing symbols from different libraries but they add and remove symbols as they will. Those removed are private symbols that "should" not be linked but they may end linked if the developer requires it so it's a big mess there. As there is no solution in which we could rely at 100 I decided to different detection methods like guessing the version from the file name or reading it from the embed strings. This will live in a separated executable that performs the checks and report back to the AppRun. So the AppRun can stay static. Also will add some environment variables to manually control which configuration should be used. |
Maybe the topic should be discussed with the glibc devs? |
I did it already, their answer is was precisely to use |
Currently we use
gnu_get_libc_version
to find the glibc version. This method requires a dynamically linked AppRun to work properly and this is a impediment when the target system doesn't have glibc (like in an alpine based system).A different method is required that allows static linking of the main binary.
reference: https://stackoverflow.com/questions/71070969/how-to-extract-and-compare-the-libc-versions-at-runtime
The text was updated successfully, but these errors were encountered: