我需要移植一个项目以使用带有自己的 Makefile 的 Eclipse 运行。我修改了它的makefile,我猜错误是连接到它或编译器标志。
主机:Virtualbox Win 8,x64,目标设备:nrf51822,即 arm cortex-m0。我使用 gnu arm cross compiler 4.8.4 (GNU Tools ARM Embedded)
编译显示以下错误/警告消息:
src/main.c:173:4: error: format '%u' expects argument of type 'unsigned int', but argument 3 has type 'uint32_t' [-Werror=format=]
我不明白。在这种情况下,uint32_t是无符号整数。我已经包含了 stdint.h。
我使用以下标志编译源代码:
CFLAGS += -mcpu=cortex-m0 -mthumb -mabi=aapcs --std=gnu11 -funsigned-char -DNRF51 -DDEBUG_NRF_USER -DBLE_STACK_SUPPORT_REQD -DBOARD_PCA10000 -DNRF51822_QFAA_CA
CFLAGS += -Wall -Werror
CFLAGS += -mfloat-abi=soft
-mcpu=cortex-m0 不指定整数的大小吗?stdint.h 预处理器宏应生成“typedef unsigned int __uint32_t;”。Eclipse 显示该行已编译,但我不知道是否信任它,因为外部 makefile 与它自己的编译器一起使用。