arm-linux-gcc .s 和 .S 的区别 !

unix/linux  对 大小写敏感:

.s  操作 :汇编

.S 操作 : cpp + 汇编

eg:

/* start.s */

#define rTEXT 0x12345678

     LDR    R0,=rTEXT

    ....

 

# arm-linux-gcc -g -c -nostdlib start.s -o start.o

# nm -u start.o

rTEXT

# arm-linux-objdump -S -t start.o > start.l

# cat start.i | grep ''R0"

  LDR  R0,【PC,#0】

经典错误:

arm-linux-gcc 将.s 文件误认为cpp处理后的文件(不忽略文件类型),故而将 rTEXT 看作为标号,arm-linux-ld 的时候理所当然报 undefined reference ....

只要将 .s 改名为 .S即可!!

# mv start.s start.S

# .....

即可

posted @ 2013-04-05 19:06  moon_cat  Views(573)  Comments(0)    收藏  举报