The kernel issues are generally sneakier (that'll usually mean kernel API/syscalls that aren't actually supported on the target device get detected and compiled in as "available", which is bad, and not necessarily readily visible until you hit strange runtime failures in some sneaky corner-cases).
The main issue is the glibc version pulling in newer symbols, for much the same reasons (they're in the header, they look available/usable, they get used). Once you hit the target device, the dynamic loader will complain about undefined symbol(s) and refuse to run your stuff.
The more obvious potential issue with the kernel is the minimum supported kernel version set at compile time by the glibc. That's what gets reported by file, and, indeed, it's rarely an issue (unless you target older devices, which do still run Linux 2.6.xx).
Last edited by NiLuJe; 08-25-2019 at 11:39 AM.
|