1. 程式人生 > >C語言中的main函數以及main函數是如何被調用的

C語言中的main函數以及main函數是如何被調用的

連接 命令 c程序 指定 www blog nbsp 程序 編譯器

main函數是C語言中比較特殊的函數,C程序總是從main函數開始執行,main函數的原型是:

1 int main(int argc, char *argv[]);

其中argc是命令行參數的個數,argv是指向參數的各個指針所構成的數組。

當內核執行C程序時(使用一個exec函數),在調用main前先調用一個特殊的啟動例程(什麽鬼?)。可執行程序文件將此啟動例程指定為程序的起始地址——這是由連接編輯器設置的,而連接編輯器則是由C編譯器調用。啟動例程從內核取得命令行參數和環境變量值,然後為按上述方式調用main函數做好安排。

大概的過程就是如下圖所示了:

技術分享

http://blog.csdn.net/sxh741/article/details/54970085這個鏈接中講的還挺清楚的

http://www.cnblogs.com/findumars/p/6417932.html講的是C++的main函數執行之前的做的事情

1、先來看一個簡單的C程序(simple.c)作為例子講解

2、編譯

gcc -o simple simple.c

3、查看可執行文件的基本信息

objdump -f simple

4、什麽是ELF

5、關於起始地址

C語言中的main函數以及main函數是如何被調用的