码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-08-30 11:24:44      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:quora

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 分别对应动态静态库



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

标签:quora

原文地址:http://blog.csdn.net/xcc_xing99/article/details/48102207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!