变矩器离合器-c选项错误

变矩器离合器-c选项错误,c,tcc,C,Tcc,我试图使用TCC将.c文件转换为.s文件,但是,我收到错误:TCC:无法使用-c指定多个文件 tcc.exe main.c -c main.S 我该怎么办?据我所知,tcc没有生成程序集列表的选项 tcc-cfoo.c将c源文件foo.c作为输入,并生成一个二进制对象文件foo.o 它还可以将部件文件作为输入: tcc-c asm.S预处理和组装现有asm.S文件中的汇编源代码,并生成一个对象文件asm.o tcc-c asm.s与之类似,但它不会在组装输入文件之前对其进行预处理 手册页上说:

我试图使用TCC将
.c
文件转换为
.s
文件,但是,我收到错误:
TCC:无法使用-c指定多个文件

tcc.exe main.c -c main.S

我该怎么办?据我所知,tcc没有生成程序集列表的选项

tcc-cfoo.c
将c源文件
foo.c
作为输入,并生成一个二进制对象文件
foo.o

它还可以将部件文件作为输入:

tcc-c asm.S
预处理和组装现有
asm.S
文件中的汇编源代码,并生成一个对象文件
asm.o

tcc-c asm.s
与之类似,但它不会在组装输入文件之前对其进行预处理

手册页上说:

TCC选项与gcc选项非常相似。主要区别在于 TCC还可以直接执行生成的程序并将其 运行时参数

如果tcc有一个生成程序集列表的选项,那么它肯定会使用gcc(和许多其他基于Unix的编译器)使用的相同选项,即
-S
--但是:

您可以使用
objdump
获得排序的程序集列表:

$ cat foo.c
#include <stdio.h>
int main(void) {
    puts("hello");
}
$ tcc -c foo.c
$ objdump -d foo.o

foo.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <main>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 81 ec 00 00 00 00    sub    $0x0,%rsp
   b:   48 8d 05 fc ff ff ff    lea    -0x4(%rip),%rax        # e <main+0xe>
  12:   48 89 c7                mov    %rax,%rdi
  15:   b8 00 00 00 00          mov    $0x0,%eax
  1a:   e8 fc ff ff ff          callq  1b <main+0x1b>
  1f:   c9                      leaveq 
  20:   c3                      retq   
$ 
$cat foo.c
#包括
内部主(空){
放置(“你好”);
}
$tcc-c foo.c
$objdump-d foo.o
o:文件格式elf64-x86-64
第节的分解。正文:
0000000000000000 :
0:55推送%rbp
1:48 89 e5 mov%rsp,%rbp
4:48 81欧共体00分$0x0,%rsp
b:48 8d 05 fc ff lea-0x4(%rip),%rax#e
12:48 89 c7 mov%rax,%rdi
15:b8 00 mov$0x0,%eax
1a:e8 fc ff callq 1b
1f:c9-Q
20:c3 retq
$ 
但是正如您所看到的,您丢失了从编译器生成的程序集列表中获得的一些信息。(使用
objdump
选项可能会提供更多信息。)

我正在Linux x86_64系统上使用tcc版本0.9.25

(remyabel发布了一篇文章,但删除了它,我不知道为什么。)

$ cat foo.c
#include <stdio.h>
int main(void) {
    puts("hello");
}
$ tcc -c foo.c
$ objdump -d foo.o

foo.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <main>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 81 ec 00 00 00 00    sub    $0x0,%rsp
   b:   48 8d 05 fc ff ff ff    lea    -0x4(%rip),%rax        # e <main+0xe>
  12:   48 89 c7                mov    %rax,%rdi
  15:   b8 00 00 00 00          mov    $0x0,%eax
  1a:   e8 fc ff ff ff          callq  1b <main+0x1b>
  1f:   c9                      leaveq 
  20:   c3                      retq   
$