c++ - 我怎样才能阻止 gcc 在较新的 ARM cpu 上发出 swap{b}?

标签 c++ linux assembly arm

我正在编译 DCP-O-Matic在 Raspberry Pi 2 上收到以下警告:

/tmp/ccu6rDcg.s: Assembler messages:
/tmp/ccu6rDcg.s:4208: Warning: swp{b} use is deprecated for ARMv6 and ARMv7

我已将“-mcpu=cortex-a8 -mfpu=neon”传递给编译器,但我仍然收到警告。我很确定 Linux 内核中有一些东西使这个警告无关紧要,但我真的很想解决这个问题。

post有很多有用的信息,但我似乎找不到合适的开关来阻止警告。我已经验证没有使用 swp{b} 的显式汇编代码。

谁能推荐清除这些警告的最佳方法?我真的很讨厌编译警告。 ;) 我认为如果有警告,就会有修复。

澄清一下,我感兴趣的是如何让 gcc 工具链发出正确的 LDREX/STREX 指令,而不是交换{b}。

最佳答案

您可以使用 -mno-warn-deprecated 禁用警告。源代码的快速 grep 似乎没有显示内联汇编的使用,所以它可能在某个库的头文件中。

顺便说一句,Raspberry Pi 2 使用 Cortex-A7 处理器,如果您使用 -mcpu=cortex-a7 而不是 -mcpu=cortex-a8 进行构建,您应该会获得更好的性能。

关于c++ - 我怎样才能阻止 gcc 在较新的 ARM cpu 上发出 swap{b}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28554097/

相关文章:

assembly - PUSH CS 适用于 TASM 1.01,但使用 TASM 5.4 会产生非法索引 -- 如何修复?

c# - 在控制台应用程序中使用图像而不是文本

linux - 汇编项目,在 Intel i386 架构上使用 YASM 将行号添加到文本中

c++ - SQLBindParameter 返回 -1

linux - 我可以在/etc/fstab中为挂载点分配一个设备节点吗

c++ - 如何让模板化函数重载接受来自不同基类的派生类?

linux - Bash - 找到每行的最小数量

c - mmap 总线错误写入超过 2Gb 的 MAP_SHARED 文件

c++ - 为什么我不能用这个功能在Qt框架中打开另一个进程?

c++ - RegExp 字符串过滤 - 如何允许 `-` 符号?