ssokolow: Static linking makes it quite painful to support games in the long term and on quirky niche distros.
user634: I think you misunderstand what static linking is. To statically "link" a program one includes a copy of the library in the binary. It entirely eliminates the need to call arbitrary system libs. The only exception that I am aware of are calls to the kernel, and given that the linux kernel attempts to maintain a stable ABI/API, that shouldn't be an issue.
No, I'm quite aware what static linking is and do have some experience with C and C++. (Though I primarily work in languages like Python and JavaScript)
I'm talking about situations like:
1. When Waking Mars was released in one of the Humble Bundles, a lot of people had trouble with the game locking up on Linux. The solution listed on their support page is to replace the bundled copy of OpenAL. That would have been impossible if it were part of the game binary.
2. I'm forgetting their names, but I've fixed one or two games by deleting a bundled library so the system copy was used.
3. Historically, many problems have been fixed using LD_PRELOAD hacks (eg. the aoss and padsp audio compatibility shims) and LD_PRELOAD only affects functions resolved by the dynamic linker.
One example being StepMania 3.9 which, for god knows what reason, would crackle on my system with dmix unless I let it think it was getting exclusive hardware access via OSS and called it via aoss.
(I'm also planning to write an LD_PRELOAD shim for SDL_ListModes and SDL_SetVideoMode to trick Dungeons of Dredmor into allowing windowed resolutions other than the 2560x1024 that I've locked my dual-monitor desktop at.)
4. When Wayland comes out, games like Inescapable which statically-link against pre-Wayland OpenGL helper libraries will be stuck using XWayland unless the developer releases an update, they're using a version of SDL 2 with SDL_DYNAMIC_API, or someone loves the game enough to rewrite the engine from scratch.