gpt4 book ai didi

c++ - 针对特定 CXXABI 和 GLIBCXX 版本进行交叉编译

转载 作者:行者123 更新时间:2023-11-30 04:50:40 26 4
gpt4 key购买 nike

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

当我使用 arm-linux-gnueabihf-g++ 从我的 Ubuntu 18.04 交叉编译,并尝试在目标上运行它时,我收到此错误:

./main: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./main)

./main: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./main)

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

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

非常感谢

最佳答案

您需要找到与目标的 libstdc++ 相同版本的编译器。

当新符号添加到 libstdc++ 时,这些 ABI 版本有时(并非总是)增加。

无论如何,最好的办法是始终在构建机器上安装相同的操作系统版本。这保证具有相同的工具链版本(尽管交叉编译器可能略有不同)。

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


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

我会尝试适用于您的目标的最新版本。您还可以比较 libstdc++.so.X.Y.Z 的 so 版本,并确保您使用的 GCC 版本与 libstdc++ so 版本最大是目标机器上的版本。

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

进一步查看该文件,我发现了这个提交:https://github.com/gcc-mirror/gcc/commit/c19175577e1cbf749590889441ad5dd03bb2c9d7它添加了您缺少的符号版本,Github 将其标记为存在于 GCC 5 中。不幸的是,Ubuntu 18.04 没有 pre-5 GCC 工具链。

关于c++ - 针对特定 CXXABI 和 GLIBCXX 版本进行交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54923230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com