gcc - 为什么相同的 CFLAGS 可以在 makefile 中重复两次?
问题描述
这是makefile的部分:
CFLAGS += -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16
CFLAGS = -g -O2 -Wall
CFLAGS += -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-d16
第一行与第三行完全相同。
注释第一行后,“make”不会出错。
但是在注释第三行之后,“make”就出错了。错误:
/tmp/ccIrbEv9.s: Assembler messages:
/tmp/ccIrbEv9.s:77: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:368: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:402: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:1276: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:1305: Error: selected processor does not support `rbit r0,r3' in ARM mode
/tmp/ccIrbEv9.s:1371: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:1400: Error: selected processor does not support `rbit r0,r3' in ARM mode
/tmp/ccIrbEv9.s:1544: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:1573: Error: selected processor does not support `rbit r0,r3' in ARM mode
/tmp/ccIrbEv9.s:1643: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:1672: Error: selected processor does not support `rbit r0,r3' in ARM mode
/tmp/ccIrbEv9.s:2989: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:3021: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:3060: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:3096: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:3342: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:3371: Error: selected processor does not support `rbit r0,r3' in ARM mode
/tmp/ccIrbEv9.s:3443: Error: selected processor does not support `rbit r0,r0' in ARM mode
/tmp/ccIrbEv9.s:3472: Error: selected processor does not support `rbit r0,r3' in ARM mode
/tmp/ccIrbEv9.s:3783: Error: selected processor does not support `rbit r0,r0' in ARM mode
Makefile:27: recipe for target 'Src/stm32f7xx_hal_dma2d.o' failed
我感到困惑。
解决方案
CFLAGS = -g -O2 -Wall
此行覆盖第一行(注意分配),因此,如果删除第三行,则在没有这些选项的情况下进行编译,并且应用工具链默认值。在这种非常特殊的情况下,编译器似乎不接受默认目标的源。
推荐阅读
- c# - 活动设计(Unity3d)
- javascript - 如何下载在 pdf.js 中打开的画布呈现的 pdf 文件?
- r - 使用 ggplot2 在 R 中的折线图下方创建彩色区域
- python - 如何为颜色分配名称?
- c++ - 如何仅通过向量对的第一个元素或自定义向量三元组使用 std::find?
- java - 使用休眠保存自定义对象类型变量
- angular - Angular:将 jQuery 导入惰性模块中的全局命名空间
- database - 掌舵 postgres 连接 - 无法连接
- python - 有没有办法防止 Slack 应用程序自动关闭?
- c - select() 适用于 STDIN 但不适用于套接字