dtgreene: Linux didn't remove a.out binary support until rather recently. (This feature had been obsolete for *decades* prior to removal.)
Odd, often when compiling c applications in gcc i get a.out usually. Though i think it's actually an ELF application when the file is checked.
rtcvb32: Though kernel bugs that are relied on would be annoying...
dtgreene: Or shared library bugs. For example, if you look through the sqlite3 API, you'll notice things like sqlite3_prepare_statement and sqlite3_prepare_statement_v2 (or something like that), where the former has some undesired behavior that has to be retained or it will break older applications that rely on it.
Mhmm. I wonder if it would be better not to, and just statically include libraries rather than use shared libraries. Yes it makes the executables a bit larger but version changes won't affect them. Not much better than using dll's with windows applications, as a lot of applications include their own copies of common libraries like zlib.
I don't know, there's advantages and disadvantages of both, the bigger problem being that when the programmers are done they tend not to want to go back and make fixes to library changes. To which for the linux kernel is a bit better where for like the ext filesystem when they introduced new features that would break it, it forked to it's own so you get ext2 ext3 ext4, etc etc. While most software libraries want you to update to the newest version.