Linux Binary Compatibility Definition

What is the best way to identify precompiled binary dependencies (in particular with regard to the characters and versions of glibc and libstdc ++), and then make sure that the target system is installed?

I have a limitation in that I cannot provide the source code for compilation on each machine (restriction on the employer), so the defacto answer “compiling on each machine for compatibility” does not work. I also do not want to provide statically compiled binaries - → it seems very important to use a hammer to open an egg.

I examined a number of approaches that loosely focus on defining the symbols / libraries that my executable / library needs to execute using commands such as    ldd -v </path/executable> or    objdump -x </path/executable> | grep UND and then somehow run the command on the target system to check if such symbols, libraries and version (not quite exactly how am I doing this step?). This is then followed by some pattern matching or character matching to ensure the correct version or more.

Nevertheless, I feel that this has already been done to a large extent for me, and I suffer from ... a “knowledge gap”? about how it is being implemented.

Any thoughts / suggestions on how to proceed?

I must add that this is intended to install my software on a wide variety of Linux distributions - in particular, configured clusters that may not comply with distribution rules or standardized packaging methods. The goal is a smooth installation.

+4
source share
2 answers

Use the Linux application verification tool ( [1] , [2] , [3] ) to check the binary compatibility of your application with various Linux distributions. You can also check compatibility with your custom distribution with this tool.

enter image description here

+1
source

GNU (glibc libstd++) , . , , (CXXABI_ * GLIBCXX_ * libstd++, GLIBC_ * glibc). script :

nm -D libc.so.6 | grep " A "

, , libc ( libstd++). C dlvsym() ( dlopen()), , , dlvsym()).

glibc gnu_get_libc_version() confstr().

- , glibc/libstd++. , , GLIBC_2.10, , glibc, 2.10 ( 2.18 ). ( / .symver), chroot ( ).

+4

All Articles