I was playing that a lot on my first Linux.
There are several methods for dealing with each type of collision.
Edit: Oh, I was thinking of TuxRacer.
Anyway, we've actually just now published packaged builds for Linux distros, available at https://software.opensuse.org/download.html?project=home%3Am...
SDL provides input, graphics, sound, and even some OS-level abstractions. That's quite a bit of the effort involved in porting a game typically.
3D titles that were using DirectX or C#, of course, can be significantly more involved.
Maybe we are porting different kinds of games?
They usually are single-threaded, have a single file archive or open files from a single directory (without any searching or the like). Surprised you've run into IPC use at all really.
I have had to deal with the file case-sensitivity issue, but that's usually not the most difficult issue to resolve. SDL_physfs and SDL itself provides solutions for a lot of the usual hackery in dealing with file I/O though.
Never had to deal with Endian issues as I've only been involved with ports that ran on x86.
Still, I'd say that the parts that SDL provides abstractions for are the parts that I least want to deal with -- especially when it comes to input handling or dealing with screen resolution changes. Years of knowledge there.
Fortunately it doesn't need to do networking, threading, or IPC; those are definitely a pain. Boost provides an abstraction layer, but it's a big dependency.
I am playing xmoto for years and it is probably the only game that I install on some of mine machines.