在学习汇编设置栈,然后调用C语言的过程中,发现出现了一个错误。发现是汇编文件的后缀名我写成小写的了,换成大写即可
提示如下:
root@ubuntu:/mnt/hgfs/winshare/s5pv210/project/LED2# make
as -o start.o start.s
start.s: Assembler messages:
start.s: Warning: end of file not at end of a line; newline inserted
start.s:11: Error: junk at end of line, first unrecognized character is `/' (这句话是主要的)
start.s:14: Error: no such instruction: `ldr r0,=WTCON'
start.s:15: Error: no such instruction: `ldr r1,=0x0'
start.s:16: Error: invalid char '[' beginning operand 2 `[r0]'
start.s:18: Error: no such instruction: `ldr sp,=SVC_STACK//设置栈'
start.s:20: Error: no such instruction: `bl led_blink'
start.s:22: Error: no such instruction: `b .'
make: *** [start.o] Error 1
由于是跟着视频在学习,非常仔细的对比了代码的不同,发现并没有什么区别,于是,我是用文件替代的方法,由于makefile之类都是一样的,所以主要就是在c文件和汇编文件两个,我将我的C文件替换到老师的那个文件夹下,发现编译通过,将汇编文件替换却报错了,所以将问题确定到汇编。我和老师的代码认真的核对,发现没有问题,不过还是报错,我一怒一下将老师的代码原封不动地复制下来,发现还是报错,见了鬼了
在此过程中,我发现了后缀名我的是start.s 老师的为start.S 后面的大小写不一样,于是死马当作活马医,试了一下,结果居然是这个问题,应该是后缀还是有讲究的,具体深层次的原因并不知道,但是改了后缀名之后亲测可用