特定CXXABI和GLIBCXX版本的交叉编译



我想交叉编译在Linaro上运行的ARM目标的软件。

当我使用Arm-linux-gnueabihf-g 从Ubuntu 18.04进行编译时,我尝试在目标上运行它,我会得到此错误:

./main:/usr/lib/arm-linux-gnueabihf/libstdc so.6:版本 `cxxabi_1.3.9'找不到(./main要求)

./main:/usr/lib/arm-linux-gnueabihf/libstdc so.6:版本`glibcxx_3.4.21' 找不到(由./main要求)

我的问题是我无法升级目标上的任何库。

所以我的问题是,我可以在编译时指定特定版本的glibc和cabi吗?

非常感谢

您需要找到与目标的libstdc 的编译器。

的一部分。

当将新符号添加到libstdc 。

时,这些ABI版本有时会增加(并非总是如此)

您最好的选择是在任何情况下总是在构建计算机上安装相同的OS版本。这可以保证具有相同的工具链版本(尽管跨编译器可能会略有不同)。

旧答案如下。GCC-4没有软件包,因此您必须安装旧的Ubuntu版本。


似乎Ubuntu 18.04有几个GCC版本:https://packages.ubuntu.com/search?keywords = arm-linux-linux-gnueabihf& searchon = names& suite = bionic& spection = all

我会尝试最新的目标,适合您的目标。您还可以比较libstdc 的SO版本。

如果您很好奇,则可以在此处找到定义这些符号版本的文件:https://github.com/gcc-mirror/gcc/blob/master/master/libstdc+++-v3/config/config/abi/pre/gnu.ver。

进一步查看该文件,我找到了此提交:https://github.com/gcc-mirror/gcc/commit/c191755777e1cbf7495959444441ad55dddddddddddddddddddd03bbb2c9d7d7它添加了您缺少的符号的版本,GitHub将其标记为GCC 5中的存在。不幸的是,Ubuntu 18.04没有Pre-5 GCC工具链。

最新更新