GCC中是否有.s汇编文件的替代扩展名?区分手写与自动生成文件
解决GCC混合编译C与自定义扩展名汇编文件的问题
场景说明
我通过自定义编译器生成.s格式的汇编文件作为中间产物,需要和C源码一起用GCC完成编译。为了在make clean时只清理自动生成的.s文件,同时保留手写的汇编代码,我打算把手写汇编改用.asm扩展名,但直接编译.asm文件时遇到了报错。
编译报错
直接执行编译命令时,链接器无法识别.asm文件格式,报错如下:
$ gcc test.asm -o test /usr/bin/ld:test.asm: file format not recognized; treating as linker script /usr/bin/ld:test.asm:1: syntax error collect2: error: ld returned 1 exit status
可行方案
使用GCC的-x选项显式指定文件类型为汇编,就能正常混合编译C文件和.asm汇编文件了,命令如下:
gcc test1.c -x assembler test.asm -o test
这里的-x assembler会告诉GCC,把后续的test.asm当作汇编源码处理,避免链接器误判文件格式。
内容的提问来源于stack exchange,提问作者Scott Franco
相关产品推荐
相关产品推荐

