arm-GCC编译asm文件
arm-GCC to compile asm file
我正在尝试使用 GCC 编译一个简单的 "asm" 文件以了解编译过程。
test.h:
#define APPLICATION_EXIT .end
test.asm:
#include "test.h"
APPLICATION_EXIT
当我 运行 :
arm-none-eabi-gcc-9.2.1.exe -mcpu=cortex-m7 -mthumb -g -c .\test.asm
我得到了:
arm-none-eabi-gcc-9.2.1.exe: warning: .\test.asm: linker input file unused because linking not done
但是没有生成任何内容,没有“输出”文件。
我试着 运行
arm-none-eabi-as -mcpu=cortex-m7 -mthumb -g -c .\test.asm
我得到了:
.\test.asm: Assembler messages:
.\test.asm:2: Error: bad instruction `application_exit'
看起来 AS 有效,但宏无效。
当我将 test.asm 更改为 :
#include "test.h"
.end
arm-none-eabi-as -mcpu=cortex-m7 -mthumb -g -c .\test.asm
作品。我得到了 a.out.
我是不是用错了GCC?为什么 Gcc 无法直接 运行 后端 "as"?
为什么#define 宏不起作用?
非常感谢,我感谢任何评论。
您可以在 the gcc manual 中看到哪些文件扩展名被识别。 .asm
未列出,因为 Unix 中的汇编语言源文件传统上被命名为 .s
,或者如果要通过 C预处理器。 (C 样式宏和包含扩展由 C 预处理器处理,而不是由汇编程序本身处理,这就是为什么当您直接 运行 as
时它不起作用。)
无法识别的文件被假定为要传递给链接器的目标文件,但由于您指定了 -c
,链接器不是 运行,因此 gcc
认为无事可做。
您可以重命名文件以 .S
结尾,或者使用选项 -x assembler-with-cpp
明确告诉 gcc 如何处理该文件。或者,您可以先在文件上 运行 cpp
来展开宏和包含,然后在结果输出上 运行 as
(或通过管道将一个输入另一个)。
我正在尝试使用 GCC 编译一个简单的 "asm" 文件以了解编译过程。 test.h:
#define APPLICATION_EXIT .end
test.asm:
#include "test.h"
APPLICATION_EXIT
当我 运行 :
arm-none-eabi-gcc-9.2.1.exe -mcpu=cortex-m7 -mthumb -g -c .\test.asm
我得到了:
arm-none-eabi-gcc-9.2.1.exe: warning: .\test.asm: linker input file unused because linking not done
但是没有生成任何内容,没有“输出”文件。 我试着 运行
arm-none-eabi-as -mcpu=cortex-m7 -mthumb -g -c .\test.asm
我得到了:
.\test.asm: Assembler messages:
.\test.asm:2: Error: bad instruction `application_exit'
看起来 AS 有效,但宏无效。 当我将 test.asm 更改为 :
#include "test.h"
.end
arm-none-eabi-as -mcpu=cortex-m7 -mthumb -g -c .\test.asm
作品。我得到了 a.out.
我是不是用错了GCC?为什么 Gcc 无法直接 运行 后端 "as"? 为什么#define 宏不起作用? 非常感谢,我感谢任何评论。
您可以在 the gcc manual 中看到哪些文件扩展名被识别。 .asm
未列出,因为 Unix 中的汇编语言源文件传统上被命名为 .s
,或者如果要通过 C预处理器。 (C 样式宏和包含扩展由 C 预处理器处理,而不是由汇编程序本身处理,这就是为什么当您直接 运行 as
时它不起作用。)
无法识别的文件被假定为要传递给链接器的目标文件,但由于您指定了 -c
,链接器不是 运行,因此 gcc
认为无事可做。
您可以重命名文件以 .S
结尾,或者使用选项 -x assembler-with-cpp
明确告诉 gcc 如何处理该文件。或者,您可以先在文件上 运行 cpp
来展开宏和包含,然后在结果输出上 运行 as
(或通过管道将一个输入另一个)。