Newlib移植成功

把Newlib移植到MyOS后,用printf测试的时候,总有问题。上网查找了很多资料,最终找到一篇关于Newlib的printf的帖子,作者在移植newlib的时候,碰到了和我一样的问题。于是,昨天晚上给作者发了封邮件,希望能够得到帮助。

这时我第一次和老外发邮件,真有点担心自己的英文水平那么烂,老外能不能看懂。为了少暴露问题,所有就写了封很简短的邮件,发了出去。今天早上来公司以后,收到了回复。从这一点上,我很喜欢老外。 虽然没有告诉我解决方法,不过提到了是不是我的系统调用实现的有问题。我同时也移植了别的libc,证明我的系统调用是对的,所有就回复说没有问题,并问他是不是有别的需要注意的地方。后来,我左思右想,觉得第一个printf对,第二个没反应,肯定还是那不对。后来发现,当第一个printf结束时,write系统调用的返回值错了。一看代码,终于发现了问题。原来程序执行时,并没有自动打开标准输入、标准输出、标准输出(因为MyOS是基于GUI的),这样当调用printf时,文件其实是不存在的,这样最终调用到write系统调用时,文件无效。原先的做法是输出,然后死循环。不过为了让程序正常运行,后来把死循环去掉了,但忘了加入正确的return,结果返回了错误的-1。修改之后,终于正常工作了。呵呵。

说到这儿,我又想到了一个问题。就是程序有问题时,我们总怀疑是别人的代码不对,可最终结果往往证明是自己错了,尤其是那些历史已经很久的代码。所有,我经常说,碰到问题,基本上不用怀疑是别人错了,肯定是自己的代码有问题。因为如果是使用的库有问题的话,也早就有人发现了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值