如何编写一个没有主函数的C程序

From Quora:https://www.quora.com/How-can-I-write-a-C-program-without-a-main-function

Question:我如何才能写一个没有主函数的C程序?


Answer From Travis Hance:

你可以编译任何一个C程序,无论有没有主函数,或者是一个对象文件(.o文件)。只有当你把所有对象文件链接起来,去组成一个可执行文件,你才需要主函数。

如果你想更深入的去了解,你学要知道一些平台特性。

例如在Linux上,一个可执行文件的执行是从_start而不是main。_start函数是在libc里执行的。所以如果你让编译去忽略libc,main就没有执行的基础,然后你就不需要它了。但你必须使用_start作为替代。在这个博客里有一个非常实用的指导: 

oracle.com
Hello from a libc-free world! (Part 1)



Answer From Sergey Zubkov:

如果你真的想那么做,编译freestanding(一个独立的编译器不需要有main函数)

$ cat test.c
#include <unistd.h>
#include <string.h>
int szstart()
{
    char* msg = "No main here\n";
    write(1, msg, strlen(msg));
    _exit(0);
}
$ gcc -O3  -ffreestanding -c -o test.o test.c; ld -s -static -o test test.o -e szstart -lc
$ ./test
No main here



Answer From Gurudutt Mallapur:

写一个动态或者静态的C库!

你可以把你可以重复实用的C代码写到库里,并且可以把它链接到任何一个有main函数的程序里。你也需要把它链接到一个测试函数里来保证它正确运行。

在Linux里 .so/.a文件分别对应 动态 静态库

在windows里 .dll/.lib 分别对应动态静态库



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值