我是大二的学生,跟同学一起做项目。我负责的是ARM的上位机部分,这些天为了一个问题无比烦恼,最后却发现这是一个无比低级的错误,记录下来以防再犯。
ARM部分我了解的并不多,将ARM买来之后一直照着手册的使用说明边做边学,虽然并不熟练但成功将一个helloword程序交叉编译后在ARM上运行。此后过了几天
准备考试,没有再学习ARM,于是ARM被我搁置了一周时间。一周后,我再次交叉编译程序,却发现报如下错误:
{standard input}:Assembler messages:
{standard input}:41:Error:bad instruction 'lock'
{standard input}:42:Error:bad instruction 'decl [r2,#0]'
{standard input}:43:Error:bad instruction 'setne [fp,#-13]'
我找遍了百度谷歌也没有找到解决方法,无比着急。我分析各种可能性,软件冲突?ubuntu升级后版本问题?编译器错误?
于是我又重新搭建了虚拟机及编译环境,最终发现,我犯了个无比低级的错误,程序交叉编译的方法本身就错误了,我只想着曾经编译通过,就没有再考虑是否本身交叉
编译方法有错,盲目的将最应该先考虑的可能性排除。将交叉编译过程改正,果然如同一开始一样很顺利。为了解决一个低级失误,浪费了我一周多的时间,不过这个时间不能白白浪费,此次收获如下:
1、不熟悉的过程要多次练习,例如第二次搭建虚拟机及编译环境时明显感到熟练了许多,并且找到了许多第一遍看视频学习时疏忽的地方。
2、万事皆有可能,不要想当然。
3、编写程序时多留备份,防止编写错误时不易恢复。
4、自己掌握不熟练的步骤记录下来,并多总结,不爱总结是我一大的缺点,导致我这次吃亏严重!