Search code examples
c++linuxlinux-standard-base

Is Linux Standard Base (LSB) AppChecker reliable?


According to the LSB scanner, my binary is supposedly incompatible with a specific version of Linux because it uses GBLICXX_3.4.9 symbols. But when I tried to run the binary myself on that version, everything seems to work fine...

Can a binary even start on a Linux distro if that distro is missing the runtime libraries containing the required symbols?


Solution

  • I don't know if I've understood well the question but as far as I know even though you have compiled your program with a modern glibc does not necessarily mean that you won't be able to execute into an older version. The next Linux command:

    objdump -T "your exe or lib file" | grep GLIB

    will show you which version of the glibc the symbols of your program belong to.

    For further information there is a paper called How to write shared libraries by Ulrich Drepper that explains a lot of things of how symbols work in linux not only for shared libraries but also for executables