title: GLIBCXX versions
body: <p>If I compile a C++ program on my machine, and run it on another one (with older software) I get: <code>/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found</code>.</p>
  
  <p>In fact on my system glibc is newer (I got gcc-libs 4.5.1: libstdc++.so.6.0.14) and <code>strings /usr/lib/libstdc++.so.6 | grep GLIBCXX</code> prints from <code>GLIBCXX_3.4</code> to <code>GLIBCXX_3.4.14</code>. On the other system, instead, it only prints up to <code>GLIBCXX_3.4.8</code> (I got libstdc++.so.6.0.8).</p>
  
  <p>So I've got a few questions:</p>
  
  <ol>
  <li><p>Why my linker links C++ binaries against libstdc++ version <code>GLIBCXX_3.4.9</code> instead of <code>GLIBCXX_3.4.14</code>?</p></li>
  <li><p>If I complied my binary against libstdc++ version <code>GLIBCXX_3.4</code> I guess it would run almost on everywhere. Would that imply any sort of issues? (eg: would it use older -and thus worse- algorithm implementations?)</p></li>
  <li><p>If instead I <strong>statically</strong> link my program against my libstdc++ I guess it will run everywhere; the binary will be a lot bigger (~1MB) of course, any other pros/cons?</p></li>
  <li><p>Can I force the linker to link my binary against a given version of libstdc++?</p></li>
  </ol>