- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想为在 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§ion=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/
我想在调用 dlopen() 之前确定我正在加载一个兼容的二进制文件。我想在加载库之前确定 cxxabi 级别。 最佳答案 您可以在打开二进制文件之前扫描二进制文件使用的符号列表。我不确定如何在程序中
我想为在 Linaro 14.04 上运行的 ARM 目标交叉编译一个软件。 当我使用 arm-linux-gnueabihf-g++ 从我的 Ubuntu 18.04 交叉编译,并尝试在目标上运行它
我已经安装了bsoft当我想运行一些需要 libstdc++.so.6 的函数时遇到问题。 bimg: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9
我正在尝试使用 libc++、libc++abi 和 clang++ 3.6 在 Arch Linux x64 上编译我的项目。 0。 项目编译正确,但无法链接并出现以下错误: error: CMak
我使用的是 Fedora 27,我的笔记本电脑支持混合显卡 $ lspci -vnn | grep '\''[030[02]\]' 00:02.0 VGA compatible controller
我是一名优秀的程序员,十分优秀!