免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4294 | 回复: 3
打印 上一主题 下一主题

[Linux] 没有main函数的c程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-05-07 21:36 |只看该作者 |倒序浏览
今天看了几个程序文件,找了半天,没找到main函数,倒是有几个含有main字段的函数,但是这几个文件确实可以make成可执行文件,不过这个程序依赖了很多库。我考虑以下问题:
1、这个程序是不是真的没有main函数,是不是隐含定义了,还是说被包含在其它的库中?
2、有没有不包含main的c程序,可以编译成可执行文件,如果有的话,如何做到?
敬请各位大虾指教!!!

论坛徽章:
4
白羊座
日期:2013-09-17 21:59:30技术图书徽章
日期:2013-10-12 22:16:03白羊座
日期:2013-10-14 11:01:40双子座
日期:2013-12-17 18:26:39
2 [报告]
发表于 2013-05-07 23:40 |只看该作者
1. 不知道你的程序所以不好说。但可能包含在库中,比如google test就可以这样,你通过链接一个库从而具有main方法,但这种main方法只是提供比较通用的基本功能。
也可能工具生成,比如lex工具在你没有提供main方法时,它在通过.l文件生成.c文件时就可以包含进来一个基本功能的main方法。

2.c标准定义了两种实现:hosted implementation和freestanding implementation。进而对应两种环境。对于hosted环境必须从main开始,但对于freestanding环境,入口函数是
实现定义的。glibc的程序启动流程一般是:__start --> main; 它的真正入口是__start。ld链接器有一个-e参数可以指定这个入口,默认设置为__start,你可以修改它,不过修改后
你就不能使用很多glibc的库功能了。

论坛徽章:
0
3 [报告]
发表于 2013-05-08 09:51 |只看该作者
学习2楼.没有main,最多编译通过,link时会报告找不到main的错误.
只要有main,main函数塞到任何一个地方都可以,因为它不用声明

论坛徽章:
0
4 [报告]
发表于 2013-05-08 19:55 |只看该作者
受教了,感觉很高深啊,多谢指教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP