C语言GNU中汇编文件.s与.S的差异
Posted 从善若水
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言GNU中汇编文件.s与.S的差异相关的知识,希望对你有一定的参考价值。
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。
博客内容主要围绕:
5G/6G协议讲解
算力网络讲解(云计算,边缘计算,端计算)
高级C语言讲解
Rust语言讲解
文章目录
GNU中汇编文件.s与.S的差异
今天下午学习ARM64汇编时,写了一段汇编程序,使用gcc编译总是说我没有定义 MY_LABEL,
问题代码如下,
#define MY_LABEL 0x20
.section .data
.section .text
.globl main
main:
ldr x7,=MY_LABEL
ret
问题出在文件名上
下面是GNU手册中的描述,
file.s Assembler code.
file.S
file.sx Assembler code that must be preprocessed.
问题找到了,因为我的文件名是 .s后缀 ,所以GNU编译器不会对汇编文件中的 #include、#if、#elif、#else、#endif、#define这些预处理指令做解析。
将文件名换成 .S后缀或者 .sx后缀,问题解决了,编译成功。
这里是从善若水的博客,感谢您的阅读📕📕📕
以上是关于C语言GNU中汇编文件.s与.S的差异的主要内容,如果未能解决你的问题,请参考以下文章