如何在没有main函数的情况下编译C源代码?

jar*_*ryd 31 c

如何编译我的C源文件而无需main在其中放置函数?

我收到一个.c没有main函数的文件的错误,并且不想只为编译添加main函数.

Kos*_*Kos 37

在GCC上,-c交换机就是你想要的.

-c意思是"编译,不链接",你得到一个name.o输出文件.

  • 我认为`-c`对于大多数C编译器来说都是标准的. (2认同)

Pas*_*uoq 9

使用-c编译器的选项(适用于GCC,选项可能与其他c编译器相同).

来自GCC的手册页:

当您调用GCC时,它通常会进行预处理,编译,汇编和链接."整体选项"允许您在中间阶段停止此过程.例如,-c选项表示不运行链接器.然后输出由汇编器输出的目标文件组成.

链接阶段是寻找main()和抱怨如果找不到它的步骤.


Vig*_*esh 9

假设你有hello.c:

#include<stdio.h>
#include<stdlib.h>
_start()
{
   exit(my_main());
}
int my_main()
{
   printf("Hello");
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译为:

gcc  -nostartfiles  hello.c 
Run Code Online (Sandbox Code Playgroud)

你可以从中获得一个可执行文件.

  • 你能加点引用吗? (3认同)