Shachar Shemesh wine-devel@shemesh.biz writes:
But what to do if the library functions exist during compilation, and do not during runtime? Merely linking with them will cause wineserver not to load, claiming that it requires "GLIBC version 3.2.3". Some wine uses (crossover office being one of them) require you to compile once and run almost everywhere, which run counter to this behavior.
Building with a recent glibc and running on an older one is not supported by glibc, and it won't work for many reasons having nothing to do with epoll. Crossover runs everywhere because it is built against a very old glibc.
Just yank the definitions from the header? I can do that, the license is compatible. However, I think it's pointless. Most systems will have that header, and for those who don't, we will have a fallback. What's wrong with using the header if it's there?
The libc definitions must be used with the libc function, and the kernel definitions with the system call. There is no guarantee at all that they will remain identical (check the 64-bit file support for an example of how that can happen).