title: GLIBCXX_3.4.26 not found running cross-complied program on BeagleBone
body: <p>I have the following program:</p>
  <pre><code>#include &lt;iostream&gt;
  #include &lt;sstream&gt;
  using namespace std;
  
  int main()
  {
      //ostringstream s;
      cout &lt;&lt; &quot;cpp test&quot; &lt;&lt; endl;
      return 0;
  }
  </code></pre>
  <p>I build it on Ububtu 20.04 desktop using cross-compiler:</p>
  <pre><code>arm-linux-gnueabihf-g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF&quot;src/cpp_test.d&quot; -MT&quot;src/cpp_test.o&quot; -o &quot;src/cpp_test.o&quot; &quot;../src/cpp_test.cpp&quot;
  arm-linux-gnueabihf-g++  -o &quot;cpp_test&quot;  ./src/cpp_test.o
  </code></pre>
  <p>Then I copy <code>cpp_test</code> to BeagleBone Black Wireless board and execute it:</p>
  <pre><code>debian@beaglebone:~/c$ ./cpp_test 
  cpp test
  debian@beaglebone:~/c$ ldd cpp_test
      linux-vdso.so.1 (0xbee85000)
      libstdc++.so.6 =&gt; /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6ea1000)
      libgcc_s.so.1 =&gt; /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6e78000)
      libc.so.6 =&gt; /lib/arm-linux-gnueabihf/libc.so.6 (0xb6d7e000)
      libm.so.6 =&gt; /lib/arm-linux-gnueabihf/libm.so.6 (0xb6d03000)
      /lib/ld-linux-armhf.so.3 (0xb6fbe000)
  </code></pre>
  <p>Now I uncomment the line <code>ostringstream s;</code>, build the program, copy it to BeagleBone and execute:</p>
  <pre><code>debian@beaglebone:~/c$ ./cpp_test 
  ./cpp_test: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./cpp_test)
  debian@beaglebone:~/c$ ldd cpp_test
  ./cpp_test: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./cpp_test)
      linux-vdso.so.1 (0xbefa6000)
      libstdc++.so.6 =&gt; /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6e22000)
      libc.so.6 =&gt; /lib/arm-linux-gnueabihf/libc.so.6 (0xb6d28000)
      /lib/ld-linux-armhf.so.3 (0xb6f3f000)
      libm.so.6 =&gt; /lib/arm-linux-gnueabihf/libm.so.6 (0xb6cad000)
      libgcc_s.so.1 =&gt; /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6c84000)
  </code></pre>
  <p>Additional information from the board:</p>
  <pre><code>debian@beaglebone:/usr/lib/arm-linux-gnueabihf$ ls -l | grep libstdc++.so.6
  lrwxrwxrwx  1 root root       19 Apr  6  2019 libstdc++.so.6 -&gt; libstdc++.so.6.0.25
  -rw-r--r--  1 root root  1019772 Apr  6  2019 libstdc++.so.6.0.25
  debian@beaglebone:/usr/lib/arm-linux-gnueabihf$ uname -r
  4.19.94-ti-r45
  debian@beaglebone:/usr/lib/arm-linux-gnueabihf$ uname -a
  Linux beaglebone 4.19.94-ti-r45 #1buster SMP PREEMPT Thu Jun 18 19:18:41 UTC 2020 armv7l GNU/Linux
  </code></pre>
  <pre>
  debian@beaglebone:~$ strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6.0.25 | grep GLIBCXX
  GLIBCXX_3.4
  GLIBCXX_3.4.1
  ...
  GLIBCXX_3.4.24
  GLIBCXX_3.4.25
  </pre>
  <p>Additional information from the host:</p>
  <pre>
  alex@alex-u20:~$ arm-linux-gnueabihf-g++ -v
  Using built-in specs.
  COLLECT_GCC=arm-linux-gnueabihf-g++
  COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabihf/9/lto-wrapper
  Target: arm-linux-gnueabihf
  Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.3.0-10ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --without-target-system-zlib --enable-libpth-m2 --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabihf --program-prefix=arm-linux-gnueabihf- --includedir=/usr/arm-linux-gnueabihf/include
  Thread model: posix
  gcc version 9.3.0 (Ubuntu 9.3.0-10ubuntu1)
  
  alex@alex-u20:/usr/lib/x86_64-linux-gnu$ strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 | grep GLIBCXX
  GLIBCXX_3.4
  GLIBCXX_3.4.1
  ...
  GLIBCXX_3.4.24
  GLIBCXX_3.4.25
  GLIBCXX_3.4.26
  GLIBCXX_3.4.27
  GLIBCXX_3.4.28
  </pre>
  <p>Finally, this program runs on the desktop using qemu:</p>
  <pre><code>alex@alex-u20:~/tmp/cpp_test/Debug$ qemu-arm-static -L /usr/arm-linux-gnueabihf/ cpp_test
  cpp test
  </code></pre>
  <p>Both computers, host and BB board, are completely updated.</p>