相关疑难解决方法(0)

ARM ABI和EABI的目的是什么?

我越看这篇PDF,我就越不明白这意味着什么.另外,我想对其他人12发表一些评论.

arm abi eabi

33
推荐指数
2
解决办法
4万
查看次数

gcc警告"在GCC 7.1中为X传递的项目参数传递"是什么意思?

我有一个C++项目,可以在x86 Linux和Windows上使用gcc 7.2进行构建,并且没有警告,我需要将它移植到ARM设备上,所以我尝试使用运行在我的"arm-linux-gnueabihf"gcc 7.2交叉编译它x86机器,它构建但我得到了很多这种警告

note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<P2d*, std::vector<P2d> >' changed in GCC 7.1
_M_realloc_insert(end(), __x);
Run Code Online (Sandbox Code Playgroud)

/opt/armv7-gcc-2017/arm-linux-gnueabihf/include/c++/7.2.0/bits/vector.tcc:105:21: note: parameter passing for argument of type '__gnu_cxx::__normal_iterator<cpzparser::Anchor*, std::vector<cpzparser::Anchor> >' changed in GCC 7.1
    _M_realloc_insert(end(), std::forward<_Args>(__args)...);
Run Code Online (Sandbox Code Playgroud)

要么

/opt/armv7-gcc-2017/arm-linux-gnueabihf/include/c++/7.2.0/bits/vector.tcc:394:7: note: parameter passing for argument of type 'std::vector<cpzparser::PointEntity>::iterator {aka __gnu_cxx::__normal_iterator<cpzparser::PointEntity*, std::vector<cpzparser::PointEntity> >}' changed in GCC 7.1
       vector<_Tp, _Alloc>::
Run Code Online (Sandbox Code Playgroud)

生成的可执行文件似乎工作正常,但我担心所有这些警告的存在,因为我不知道他们的意思..任何线索?

c++ gcc

21
推荐指数
1
解决办法
6901
查看次数

如何抑制某些 ABI 更改注释(嵌入式 C++)?

在我的项目中,我收到许多形式为“注意:当启用 C++17 时,类型为‘SomeClass<int, float>’的参数传递更改为与 GCC 10.1 中的 C++14 匹配”的警告。在我更新为使用使用 C++17 标准而不是 C++14 的编译器(来自 Arm GNU 工具链 v11.2 的 gcc-arm-none-eabi)之后,发生了这种情况。

据我所知,此注释指的是纠正涉及传递特定 C++ 模板对象的错误的更改。如果我错了,请纠正我的理解,但我认为我不需要注意注释,因为我使用示例编译器(gcc 11.2)编译项目中的所有依赖项,因此不应该有任何 ABI 差异。因此,我想摆脱这些淹没终端时出现的注释。我找到了一些可能的解决方案:

设置 -Wno-psabi 标志

这有效并将禁用所有 psABI 警告。但是,有时我确实希望收到有关 ABI 更改的通知,如此处所述(GCC 的 -Wpsabi 选项究竟是做什么的?抑制它的影响是什么?)。然而,这个问题的答案也指出,如果我的程序的所有部分都是使用相同的编译器构建的,我永远不需要担心 ABI 更改。我认为我的项目就是这种情况,并且想要确认 - 除了 libstd++ 和 newlib 之外,所有库和应用程序本身都是使用 gcc 11.2 编译的。

-f比较调试第二个

这神奇地让笔记消失了,但我不确定如何或为什么。手册页指出“当将此选项传递给编译器驱动程序时,它会导致跳过第一次编译,这使得它除了调试编译器之外几乎没有什么用处。” (https://gcc.gnu.org/onlinedocs/gcc/Developer-Options.html)这似乎会导致第一个编译传递被跳过,并且只会显示第二个编译传递的输出,这意味着我执行的警告和其他输出想看的可能不会出现?因此我也对使用这个感到担心。

找到某种方法来消除有关 C++14 和 C++17 之间 ABI 参数传递更改的所有注释,但仍启用其他注释

这就是我真正想做的,但不确定是否有办法。

c++ gcc

10
推荐指数
0
解决办法
832
查看次数

删除GCC ABI更改的注释

当我使用GCC 4.7编译我的程序时,我得到以下注释:

/usr/include/c++/4.7/backward/binders.h:167:5: note: the ABI of passing structure with complex float member has changed in GCC 4.4 here
Run Code Online (Sandbox Code Playgroud)

有没有办法摆脱它?我试图谷歌它,但我找到的只是打印注释字符串的GCC源代码行.

gcc g++

6
推荐指数
1
解决办法
3568
查看次数

标签 统计

gcc ×3

c++ ×2

abi ×1

arm ×1

eabi ×1

g++ ×1