Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未发现GLIBCXX_3.4.26在BeagleBone上运行交叉编译程序_C++_Linux_Cross Compiling_Embedded Linux_Beagleboneblack - Fatal编程技术网

C++ 未发现GLIBCXX_3.4.26在BeagleBone上运行交叉编译程序

C++ 未发现GLIBCXX_3.4.26在BeagleBone上运行交叉编译程序,c++,linux,cross-compiling,embedded-linux,beagleboneblack,C++,Linux,Cross Compiling,Embedded Linux,Beagleboneblack,我有以下计划: #include <iostream> #include <sstream> using namespace std; int main() { //ostringstream s; cout << "cpp test" << endl; return 0; } 然后我将cpp_测试复制到BeagleBone黑色无线板并执行它: debian@beaglebone:~/c$ ./cpp

我有以下计划:

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    //ostringstream s;
    cout << "cpp test" << endl;
    return 0;
}
然后我将
cpp_测试
复制到BeagleBone黑色无线板并执行它:

debian@beaglebone:~/c$ ./cpp_test 
cpp test
debian@beaglebone:~/c$ ldd cpp_test
    linux-vdso.so.1 (0xbee85000)
    libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6ea1000)
    libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6e78000)
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6d7e000)
    libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6d03000)
    /lib/ld-linux-armhf.so.3 (0xb6fbe000)
现在我取消注释行
ostringstreams,生成程序,将其复制到BeagleBone并执行:

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 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6e22000)
    libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6d28000)
    /lib/ld-linux-armhf.so.3 (0xb6f3f000)
    libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6cad000)
    libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6c84000)
委员会提供的补充资料:

debian@beaglebone:/usr/lib/arm-linux-gnueabihf$ ls -l | grep libstdc++.so.6
lrwxrwxrwx  1 root root       19 Apr  6  2019 libstdc++.so.6 -> 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

主机和BB板这两台计算机都已完全更新。

这不是一个真正的答案,但在我的Ubuntu 20.04系统上,我安装了libstdc++6软件包,其中包含libstdc++.so.6.0.28

寻找符号

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 | grep GLIBCXX
给予


GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28

因此,6.0.28版似乎对应于符号3.4.28

在您的例子中,安装了libstdc++.so.6.0.25,这比GLIBCXX_3.4.26只少一个。 因此,您必须要么升级Beagle board,要么降级dev环境


当前(focal,20.04)libstdc++6版本为6.0.28。版本6.0.25包含在bionic(18.04)中,该版本也包含gcc-8


因此,也许安装包gcc-8/g++-8及其依赖项(例如libstdc++-8-dev)可以解决这个问题。

GLIBCXX_3.4.26
附带了
gcc-8
。安装gcc-8然后升级
libstdc++6
对我来说很有效。运行以下命令,如图所示:


表明你使用了错误的工具链?检查您的GCC版本…@swithwings:答案已更新,请参阅主机提供的附加信息。
BeagleBone上的Ubuntu版本是什么?
libstdc++.so.6.0.25
vs
GLIBCXX_3.4.26
?@AsteroidsWithWings:
Linux BeagleBone 4.19.94-ti-r45#1buster SMP PREEMPT Thu Jun 18 19:18:41 UTC 2020 armv7l GNU/Linux
谢谢,原因是正确的。目前我拥有的最简单的解决方案是切换到Linaro toolchain。@AlexF另一个解决方案可能是使用Ubuntu18.04或相应的Debian版本创建docker容器。 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 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
alex@alex-u20:~/tmp/cpp_test/Debug$ qemu-arm-static -L /usr/arm-linux-gnueabihf/ cpp_test
cpp test
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28 | grep GLIBCXX
sudo apt update
sudo apt install wget gcc-8 unzip libssl1.0.0 software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt-get install --only-upgrade libstdc++6