linux操作系统与应用程序的main函数
来源:互联网 发布:菲律宾4g网络制式 编辑:程序博客网 时间:2024/06/07 15:16
这几天一直在纠结:
main函数是程序的入口,一个程序启动后,经过bootloader的初始化就该经main函数进入C语言的世界,但是linux中每个应用程序的开始都是从main函数开始的。linux下有多个应用程序,岂不是有很多个main。那bootloader会知道跳到哪个main?多个main编译怎么不冲突?
在网上搜索了很久,渐渐的有些明白了:
1、main函数是C语言的入口,这句话没错;但是这句话仅仅是一个约定,而非一个亘古不变的铁律!从程序的更为本质的汇编代码来看,只是大家约定汇编初始化完了后,跳到一个名字叫"main"的标号处;言外之意就是这个标号也是可以改名的,比如linux的C语言入口就是start_kernel();从这个标号地址后就是C语言的天下了。用main这个名字仅仅是因为大家的约定而已,不遵守约定能玩的转也行啊,就像苹果充电线啥的都和别人不一样。
2、在编译时是不存多个main函数的!每个应用程序虽说都有一个main函数(从应用程序来看应用程序的入口是main函数哦);但是应用程序都是独立编译的,不会一起编译,操作系统内核就更不可能和应用程序一起编译了!所以根本不存在多个main冲突的!!可能是统一操作系统与应用程序之间的接口,抑或是侧面影响下main是程序入口的说法,main是应用程序和操作系统之间约定好的一个接口名!所以linux中每个应用程序的第一个函数必须是main。除非你改掉了内核调度的接口地方。
3、linux的应用程序的安装启动也可以类比下我们每天都在用的Windows。Windows应用程序的安装其实也是把一些执行文件拷贝到指定的文件夹里(从绿色软件看),点击就可以运行。linux下也是这样。编译好的bin文件放到指定的文件夹目录下,然后用命令启动执行。
- linux操作系统与应用程序的main函数
- 多个Main函数的应用程序
- 操作系统与应用程序的关系
- linux驱动程序与应用程序函数的联系
- linux驱动程序与应用程序函数的联系
- linux下的main 函数
- Dev C++新建Windows应用程序时的main函数模板
- 函数 void main 与 int main 的区别
- Linux下的main函数的参数
- UEFI原理与编程(四):UEFI工程模块文件-使用main函数的应用程序工程模块
- Linux下main函数参数的解析
- linux 下main() 函数的实际参数
- 操作系统与应用程序
- main函数的参数与返回值
- main函数的参数argc与argv
- Android与main函数的问题
- linux应用程序常用的函数
- dotnet控制台应用程序的静态main函数中不能直接调用成员函数
- 【记录】根文件系统启动参数设置
- ora32773:不支持对小文件表空间的操作
- POJ1011 Sticks
- html中内联数据的样式调整
- [架构] ZeroMQ 深度探索(一)
- linux操作系统与应用程序的main函数
- 电脑快捷键大全
- 基本设置与运行
- HDU 1010--Tempter of the Bone
- OK6410看门狗
- java编程300例:7.根据用户的消费情况计算用户的享受的折扣
- Linux系统性能监控命令详解
- Unofficial Windows Binaries for Python Extension Packages
- hdu 3652 B-number(数位dp)