main函數(shù)和啟動例程
當內(nèi)核使用一個exec函數(shù)執(zhí)行C程序時,在調(diào)用main函數(shù)之前先調(diào)用一個特殊的啟動例程,可執(zhí)行程序?qū)⒋死讨付槌绦虻钠鹗嫉刂?。啟動例程從?nèi)核獲取命令行參數(shù)和環(huán)境變量,然后為調(diào)用main函數(shù)做好準備。
我們常用gcc main.c -o main
命令編譯一個程序,其實也可以分三步做,第一步生成匯編代碼,第二步生成目標文件,第三步生成可執(zhí)行文件:
1 $ gcc -S main.c2 $ gcc -c main.s3 $ gcc main.o
-S
選項生成匯編代碼, -c
選項生成目標文件,此外 -E
選項只做預處理而不編譯,如果不加這些選項則 gcc
執(zhí)行完整的編譯步驟,直到最后鏈接生成可執(zhí)行文件為止。gcc命令的選項圖這些選項都可以和 -o
搭配使用,給輸出的文件重新命名而不使用 gcc
默認的文件名( xxx.c
、 xxx.s
、 xxx.o
和 a.out
),例如 gcc main.o -o main
將 main.o
鏈接成可執(zhí)行文件 main
。
如果我們