title: Optional shared libraries
body: <p>I've noticed a failing with apps depending on shared libraries: that if you're missing some dependency, the app will fail at load time <em>even if the user has no intention of using the dependency's functionality.</em></p>
  
  <p>I'd like my apps to be better than that. Ideally, rather than distribute as many as n different packages,
  where n = numberOfSupportedArchitectures * numberOfSupportedOS * <strong>∏(for each shared library)(the number of alternatives)</strong>
  I'd catch an "error while loading shared libraries" exception emitted at load time when the library I'd like- but don't need- is found to be absent, then continue execution in a way that simply avoids using the unresolved links concerned. But obviously there's no exception one can catch. If something's missing, it all falls down before main() even starts.</p>
  
  <p>The closest I can get to having control over the loading process is resolving all the links myself with dlopen, dlsym and such. So tiresome. I'd expect there'd already be a library available to do that for me?</p>
  
  <p>I note that this wouldn't be an issue on a source based distro nor on windows. I was going to put binary-packages in the tags but apparently I don't have the rep to coin tags.</p>
  
  <p>'seems like the most elegant solution would lie in refining the behavior of OS's loader/linkers.</p>