.s .S .asm
汇编文件后缀名
汇编文件往往以 .s
、.S
、.asm
为后缀名。
通常情况下,Linux 是不关心文件后缀名的。
但是,某些应用程序有一些固定用法,比如 make 命令(如果不使用 -f 选项的话)通常会在当前目录下寻找名为 Makefile 文件,把它作为默认配置文件。
类似的,gcc 有时也会根据不同的后缀名做出不一样的行为,如:
对于 .c 和 .cpp 文件,gcc 分别当做 c 和 cpp 文件编译(c和cpp的语法强度是不一样的)
.S 与 .asm
同样一份代码
_start:
jmp _start
文件名使用 start.S
和 start.asm
,gcc 就会产生不一样的行为:
gcc -m32 -g -o output/start.o -c start.asm
gcc: warning: start.asm: linker input file unused because linking not done
gcc -m32 -g -o output/start.o -c start.S
后缀名使用 .asm
,在使用 gcc 进行编译时会有警告,且编译不通过。
后缀名使用 .S
,就可以编译通过。
.S 与 .s
在内核代码中,汇编文件通常以 .S
为后缀名,.s
很少见到。
那是因为如果使用 .s
作为后缀名,很容易被 gcc -S foo.c
覆盖。