title: Understanding the gcc version and the GLIBC, GLIBCXX versions in more detail
body: <p>Assume I have the following local gcc, g++ version:</p>
  
  <pre><code>$ gcc -v
  $ g++ -v
  gcc version 6.3.1
  </code></pre>
  
  <p>I don't understanding the relation and meaning of the following compared to my compiler version:</p>
  
  <p>What is this referring to? </p>
  
  <pre><code>/usr/lib64/libstdc++.so.6
  </code></pre>
  
  <p>Trying to run a binary and I get this error, what is <code>GLIBCXX_3.4.20</code> referring to? why is the number starting with 3?</p>
  
  <pre><code>/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found
  </code></pre>
  
  <p>What is all this?</p>
  
  <pre><code>$ strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
  GLIBCXX_3.4
  GLIBCXX_3.4.1
  GLIBCXX_3.4.2
  GLIBCXX_3.4.3
  GLIBCXX_3.4.4
  GLIBCXX_3.4.5
  GLIBCXX_3.4.6
  GLIBCXX_3.4.7
  GLIBCXX_3.4.8
  GLIBCXX_3.4.9
  GLIBCXX_3.4.10
  GLIBCXX_3.4.11
  GLIBCXX_3.4.12
  GLIBCXX_3.4.13
  GLIBCXX_3.4.14
  GLIBCXX_3.4.15
  GLIBCXX_3.4.16
  GLIBCXX_3.4.17
  GLIBCXX_3.4.18
  GLIBCXX_3.4.19
  </code></pre>
  
  <p>How about the ldd version?</p>
  
  <pre><code>ldd --version
  ldd (GNU libc) 2.17
  </code></pre>
  
  <p>I can't link all these version numbers together.</p>