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/