OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1979|回复: 1

裸机printf移植stdio 编译报错

[复制链接]

15

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-4-16
在线时间
73 小时
发表于 2023-5-21 20:29:30 | 显示全部楼层 |阅读模式
1金钱
arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/start.o startup/start.S
arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/lib1funcs.o stdio/lib/lib1funcs.S
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/uart.o driver/uart.c
In file included from driver/uart.c:1:0:
driver/uart.h:7:6: warning: conflicting types for built-in function ‘putc’
void putc(unsigned char c);
      ^
driver/uart.h:8:6: warning: conflicting types for built-in function ‘puts’
void puts(void *str);
      ^
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/clk.o driver/clk.c
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/gpio.o driver/gpio.c
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/main.o user/main.c
In file included from user/main.c:6:0:
driver/uart.h:7:6: warning: conflicting types for built-in function ‘putc’
void putc(unsigned char c);
      ^
driver/uart.h:8:6: warning: conflicting types for built-in function ‘puts’
void puts(void *str);
      ^
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/interrupt.o interrupt/interrupt.c
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/ctype.o stdio/lib/ctype.c
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/muldi3.o stdio/lib/muldi3.c
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/printf.o stdio/lib/printf.c
In file included from stdio/lib/printf.c:4:0:
driver/uart.h:7:6: warning: conflicting types for built-in function ‘putc’
void putc(unsigned char c);
      ^
driver/uart.h:8:6: warning: conflicting types for built-in function ‘puts’
void puts(void *str);
      ^
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/div64.o stdio/lib/div64.c
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/string.o stdio/lib/string.c
arm-linux-gnueabihf-gcc -std=c11 -Wall -Wa,-mimplicit-it=thumb -nostdlib -c -O2  -I cpu  -I driver  -I user  -I interrupt  -I stdio/include -o obj/vsprintf.o stdio/lib/vsprintf.c
In file included from stdio/lib/vsprintf.c:28:0:
driver/uart.h:7:6: warning: conflicting types for built-in function ‘putc’
void putc(unsigned char c);
      ^
driver/uart.h:8:6: warning: conflicting types for built-in function ‘puts’
void puts(void *str);
      ^
stdio/lib/vsprintf.c: In function ‘put_dec’:
stdio/lib/vsprintf.c:247:3: warning: implicit declaration of function ‘typeof’ [-Wimplicit-function-declaration]
   rem = do_div(num, 100000);
   ^
In file included from stdio/lib/vsprintf.c:26:0:
stdio/include/div64.h:25:24: error: expected expression before ‘)’ token
  (void)(((typeof((n)) *)0) == ((uint64_t *)0)); \
                        ^
stdio/lib/vsprintf.c:247:9: note: in expansion of macro ‘do_div’
   rem = do_div(num, 100000);
         ^
Makefile:48: recipe for target 'obj/vsprintf.o' failed
make: *** [obj/vsprintf.o] Error 1


上面是make输出, do_div这个宏 typeof不知道在哪定义的,编译报错。全局搜也没搜到。。有遇到这种错的吗?希望解惑

最佳答案

查看完整内容[请看2#楼]

typeof是关键字,是GNU特性,我由于代码里面有一些c11才支持的语法,所以编译flag里面简单设置了 -std=c11,没想到这个是个关键字需要gnu11的扩展特性支持,将之改成-std=gnu11就完美解决问题了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-4-16
在线时间
73 小时
 楼主| 发表于 2023-5-21 20:29:31 | 显示全部楼层
typeof是关键字,是GNU特性,我由于代码里面有一些c11才支持的语法,所以编译flag里面简单设置了 -std=c11,没想到这个是个关键字需要gnu11的扩展特性支持,将之改成-std=gnu11就完美解决问题了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-5-29 16:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表