tftp传输可执行程序问题
昨天搭建了板子从nfs系统启动,这样只要在开发机上编写程序编译,就可以在板子上测试运行了,编写了hello world 程序,用arm编译器编译,在主板上运行,提示出错:什么exception ((什么来的,这么简单的程序语法上应该没什么问题,可能出问题的应该是编译环境或者是运行环境。
一开始google一下,发现有人提出过相同问题,不过他们基本上是编译的时候加上了 -c选项,导致编译的是目标文件,而不是可执行文件,当然出错,而我没有。
想想是不是编译器的问题,将编好的可执行文件通过winscp上传到树莓派上运行,结果提示段出错,于是认为是编译器有问题,用以前好的虚拟机的ubuntu编译,通过tftp传输到树莓派上,运行还是提示段出错,很奇怪,搞了很久,太迟了,洗洗睡了。
今天下班回家,继续弄这个问题在树莓派上编了个小程序,用file看可执行程序,和我tftp进去的文件进行比较信息,发现tftp进去的文件少了一些信息,比如linux版本号等,想到是不是文件没传输完全,用ls看大小,果然少了几个字节,很奇怪,怎么会少,难道tftp不可靠。求助man。发现tftp有两种传输模式:1,ascii;2,binary。默认是ascii,我传输的是可执行程序,应该是binary才对吧,于是进入bianry模式,get 文件,查看大小,这次果然大小一样了,chmod 赋予可执行权限,运行,成功了。不知道nfs是不是也是同样的问题,也有可能是板子环境的问题,不过这次又学到了一点。
以后,遇到难题,如果太晚了,就休息吧,休息一晚,第二天思路更清晰,效率更高。