一,記憶體圖示
二,各記憶體段的作用
1,**段、唯讀資料段
2,資料段、.bss段
3,堆
4,檔案對映區
5,棧區
6,核心對映區
三,os下和裸機下c程式載入執行的差異
1,c語言程式執行時環境有一定的要求,意思是單獨個人寫的c程式沒法直接在記憶體中執行,需要外部一定的協助,這段協助的**叫做載入執行**。(或者叫構建c執行時環境的**,這一段**在作業系統下是別人寫好的,會自動新增到程式上,這段**的主要作用是給全域性變數賦值,清.bss段)。
2,資料段的全域性變數或靜態區域性變數都是有非0的初值的,這些初值在重定位期間完成初始化,在main函式執行之前。
3,裸機中需要在啟動**start.s中補齊重定位和清.bss段。
Linux下編寫執行C語言程式
1.gcc 1.c o 1.out 1.out命名 2.gcc lm 1.c a.out使用math.h中宣告的庫函式還有一點特殊之處,gcc命令列必須加 lm選項,因為數學函式位於libm.so庫檔案中 這些庫檔案通常位於 lib目錄下 lm選項告訴編譯器,我們程式中用到的數學函式要到這個庫檔案裡...
linux下c語言程式拷貝檔案
localhost login root password 登陸字元介面 root localhost root mkdir dir1 dir2 在root目錄下,分別建立dir1,dir2兩個資料夾 root localhost root ll 檢視剛建立的dir1,dir2資料夾 root lo...
在linux下執行C語言程式
在 tmp下建立幾個檔案 如main.c tool.c tool.h 在裡面寫好原始碼 在 tmp下建立乙個名為makefile的檔案,用來定義幾個 c h 檔案的執行順序,編譯,連線 寫法如下 main main.o mytool1.o mytool2.o main是終極目標 gcc o main...