title: CentOS 5.8 with gcc 4.4.7 links against libstdc++ 6.0.8. How is it possible?
body: <p>According to the gcc ABI policy, gcc 4.4.7 should depend on libstdc++ 6.0.13. As far as I understood, the compiler version and the libstdc++ version are deeply interrelated and can't be swapped, so it came to me as a surprise to discover the following facts:</p>
  
  <ul>
  <li>CentOS 5.8 somehow manages to have a gcc44 package that links against 6.0.8, apparently coming with the default system (which is based on gcc-4.1.2)</li>
  <li>that the libstdc++.so in the compiler directory (/usr/lib/gcc/x86_64-redhat-linux6E/4.4.7, where I expected to find a libstdc++-6.0.13) is not a link to a shared object of any sort, but a text file containing <code>INPUT ( -lstdc++_nonshared /usr/lib64/libstdc++.so.6 )</code></li>
  </ul>
  
  <p>What kind of magic is going on here?</p>
  
  <p>Specifically:</p>
  
  <ul>
  <li>How could they provide a gcc 4.4.7 that links against an older version of libstdc++? I thought it was not possible.</li>
  <li>what is this stdc++_nonshared library?</li>
  <li>I didn't know a .so file could contain that text. Who parses it (dynamic linker I guess) and what are its specifications and consequences?</li>
  <li>How far can this magic go? Can I use gcc4.7 with libstdc++ 6.0.3? What is the spectrum of compatibility</li>
  </ul>