首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCC -c选项错误

TCC -c选项错误
EN

Stack Overflow用户
提问于 2014-01-01 20:50:13
回答 1查看 782关注 0票数 0

我正在尝试使用TCC将我的.c文件转换为.s文件,但是,我得到了错误:tcc: cannot specify multiple files with -c

代码语言:javascript
复制
tcc.exe main.c -c main.S

我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-01 21:42:19

据我所知,tcc没有生成程序集列表的选项。

tcc -c foo.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 -但是:

代码语言:javascript
复制
$ tcc -S foo.c
tcc: error: invalid option -- '-S'
$

可以使用objdump获取排序的程序集列表。

代码语言:javascript
复制
$ 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   
$ 

但是,正如您所看到的,您丢失了从编译器生成的程序集列表中获得的一些信息。(使用objdump选项可能会给您提供更多信息。)

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

(remyabel发布了一个similar but less detailed answer,但删除了它,我不知道原因。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20873112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档