在 Linux 源代码中,以.S(或.s)为扩展名的文件是包含汇编语言代码的文件。
在 Linux 下有两种方式,一种是使用汇编程序 GAS 和连接程序 LD, 一种是使用 GCC。
GAS 把汇编语言源文件(.S 或.s)转换为目标文件(.o):
as sourcecode.s -o objfile.o
一旦创建了一个目标文件,就需要把它连接并执行,连接一个目标文件的基本语法为:
ld objfile.o -o execode
这里 objfile.o 是目标文件名,而 execode 是输出(可执行) 文件。
如果要使用 GNU的 C 编译器 gcc,就可以一步完成汇编和连接,例如:
gcc -o execode sourcecode.S
sourcecode.S 是你的汇编程序,输出文件(可执行文件)名为 execode。其中,扩展名必须为大写的 S,这是因为,大写的 S 可以使 gcc 自动识别汇编程序中的 C 预处理命令,像#include、 #define、 #ifdef、 #endif 等,也就是说,使用 gcc 进行编译,你可以在汇编程序中使用 C 的预处理命令。