KEIL编译上的问题

1、

楼主后来怎么解决的?
我现在也遇到类似问题,也是在51822上,用keil5.
莫名其妙的就编译报错:
.\_build\ble_app_uart.axf: Error: L6200E: Symbol __stdout multiply defined (by stdio_streams.o and app_trace.o).
.\_build\ble_app_uart.axf: Error: L6200E: Symbol __stdin multiply defined (by stdio_streams.o and app_trace.o).
不知道是原因,刚才百度发现勾上 USE MICRO LIB就能编译通过。但是,我另外一个早同系的工程,不用勾微库也可以过。
感觉就是莫名其妙,很纠结。

http://bbs.csdn.net/topics/390716419?page=1#post-399249289

http://www.openedv.com/posts/list/17209.htm

 

上面我的是这样造成和解决的:原因:有一个printf,而不是全部用app_trace_log。解决:把printf替换掉就ok了,追看app_trace_log就是宏#define app_trace_log(...)或者#define app_trace_log printf,所以在调试开关打开时没有编译错误,而调试开关关上时,就有这个错误。因为调试开关关上时,printf依赖的东西可能也关闭了,而不能再用printf.

 

2、勾上微库后,编译出来的ZI明显变小(6k+变成3.5k+),烧录后能连接,但是查电量时,蓝牙就掉线,后来再发现来电震动时也掉线,纠结了很久,归根还是上面printf没替换的原因,才勾选微库,勾选了微库才查电量就掉线。

 

3、在计步算法加上后,出:

.\_build\ble_app_uart.axf: Error: L6242E: Cannot link object step_algo.o as its attributes are incompatible with the image attributes.
   ... packed-enum clashes with enum_is_int.

解决:c/c++勾上Enum Container always int


4、keil里用命令生成bin文件:C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output=.\_build\S3-1688-01-000001-00000001.bin .\_build\S3-1688-01-000001-00000001.axf

可以参考keil里的帮助文档;

http://forum.eepw.com.cn/thread/225710/1/

 


  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值