-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 15 May 2004 at 10:52, Jeroen Dekkers wrote:
Well you're not exactly comparing apples with apples here. Many command line programs are simple enough that a FreeBSD built binary runs on Linux fine because it uses nothing more than the basic POSIX API (despite different clib's) which is of course identical on both as both are compiled with GCC.
Totally wrong. You're talking about APIs, but compiled programs use ABIs, which is a different thing. And no, the ABIs between the FreeBSD C library and the GNU one are very different.
Both the GNU and BSD C libraries offer the same API's eg; size_t fread(void *buffer, size_t size, size_t count, FILE *stream). Both use the same compiler (GCC) and so therefore that API will convert into the same ABI eg; _fread using the same parameter to stack conversion mechanism (the procedural call convention).
Therefore if your program used very few extremely universal calls you could even change the entire operating system and the binary need not know any better. If Windows also used ELF binaries you could even have a good chance of running a simple Win32 binary on FreeBSD if you mapped the Win32 C library to the FreeBSD one using /etc/ld.conf (is that the right file? I always have to look it up).
My point is that simple command line executables are no test. The ANSI C specification mandated that all C implementations provide a basic subset of the Unix environment which is universal. I know this sounds like me redefining my assertion after me saying it, but I was thinking of like with like when I wrote what I did (honest!) :)
If you can find me an X11 binary from 1996 than runs unmodified on a modern installation without using some legacy binary compatibility package then I'll gladly retract my assertion.
Your assertion "A Linux binary from 1996 stands *zero* *chance* of running unmodified on the latest Linux" is proven wrong.
I would argue it's not a Linux binary - I know that's slicing words. Ok clarified version: "A Linux binary from 1996 of a similar complexity to typical binaries running on Windows at the same period stands *zero* *chance* of running unmodified on the latest Linux without some form of library emulation package". Quite a mouthful, which is why I didn't write it first time.
And IMHO binary compatibility isn't really important. Source compatibility is a lot more important, because you can just recompile the program you have.
Do even 90% of the world's computer users know what a compiler is?
That kind of foolish statement is unfortunately typical of programmers from a Unix background. Thank god we're finally getting over it.
Cheers, Niall