您需要找到与目标的 libstdc++ 所在版本相同的编译器。
当新符号添加到 libstdc++ 时,这些 ABI 版本有时(并非总是)会增加。
在任何情况下,您最好的选择是始终在您的构建机器上安装相同的操作系统版本。保证具有相同的工具链版本(尽管交叉编译器可能略有不同)。
旧答案如下。没有适用于 GCC-4 的软件包,因此您必须安装较旧的 Ubuntu 版本。
看来 Ubuntu 18.04 有几个 GCC 版本:
https://packages.ubuntu.com/search?keywords=arm-linux-gnueabihf&searchon=names&suite=bionic§ion=all
我会尝试适合您目标的最新版本。您还可以比较 libstdc++.so.XYZ 的 so 版本,并确保您使用 GCC 版本和 libstdc++ so 版本的最大版本在您的目标机器上。
If you're curious, the file defining these symbol versions can be found here: https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/config/abi/pre/gnu.ver.
Looking further in that file, I found this commit: https://github.com/gcc-mirror/gcc/commit/c19175577e1cbf749590889441ad5dd03bb2c9d7
It adds the version of symbols you are missing, and Github marks this as being present in GCC 5. Unfortunately, Ubuntu 18.04 does not have a pre-5 GCC toolchain.