不使用microlib,使用AC6,编译出错
本帖最后由 wandersky 于 2022-5-17 13:50 编辑不使用microlib, 程序中使用printf(), 一直没有成功,调试过程如下;
如果不定义_sys_open(),报如下错误:
test\test.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _sys_open was referenced
Not enough information to list load addresses in the image map.
Finished: 1 information, 0 warning and 1 error messages.
如果定义_sys_open(),报如下错误:
test\test.axf: Error: L6200E: Symbol _sys_open multiply defined (by sys_io.o and main.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
定不定义sys_open(),都不会编译成功。
这不正常么,你用microlib就好了啊
其实可以自己写printf的,这个ST是有例程的
你可以看看网上,不使用microlib的话,怎么实现printf的
我知道是可以重定义的,这个我见过
你可以http://t.zoukankan.com/birdBull-p-15697213.html参考一下,这个链接,是可以的
. 我觉得不是AC6的事儿哈,可能就是你没重指向导致的
你用microlib呗,这个勾选一下就解决这个问题了
Printf属实很好用,但是你需要选择microlib才行,或者自己写一个printf的函数
这个错误可能是你名字重复了,导致错误的
嗯,看你这个报错可能就是sys_open重定义导致了
不能定义到你选项已经设置的地址空间里面。 跟Ac6有什么关系 microlib 不符合 ISO C 库标准。 如果不想使用Microlib,则可以选择使用标准C库。 重定义printf后开启编译器的microlib即可。 标准C库包含了大量的函数和头文件,可以满足绝大部分的应用需求。 不支持某些 ISO 特性,并且其他特性具有的功能也较少。 用Keil编译程序时数据段过长怎么办? Microlib是一种C运行库,它具有很小的代码尺寸和内存占用量