測試平台:在windows下使用gcc編譯c檔案。
gcc的幾個用法:
每一步單獨處理:
gcc -e main.c -o main.i :將main.c預處理
gcc -s main.i -o main.s :將預處理的main.i檔案轉換成彙編檔案main.s
gcc -c main.s -o main.o :將彙編檔案main.s轉換成目標檔案main.o
gcc main.o -o main:將目標檔案main.o轉換成可執行檔案main.exe
也可以使用gcc直接將c檔案轉換到上面中的某一步。
gcc -e main.c -o main.i :預處理
gcc -s main.c -o main.s :生成彙編檔案
gcc -c main.c -o main.o :生成目標檔案
gcc main.c -o main:生成可執行檔案
gcc -lm main.c:不需要手動指定生成的可執行檔案的名稱,無論指定怎樣的的c檔名,統一會生成a.exe檔案(感覺和a.out檔案是等同的?)
nm命令可以用來檢視目標檔案(.o檔案)和可執行檔案(.exe檔案)中的符號表。本質上講目標檔案和可執行檔案的檔案格式是一樣的。
size命令可以用來檢視檔案中各個段的大小。
下面是針對int型變數和陣列做的兩個測試:
int變數測試:
陣列測試:
指標和陣列:
可執行檔案格式elf和bin
常用的可執行檔案包含兩類 原始二進位制檔案 bin 和可載入執行的二進位制檔案,在linux中可載入執行的二進位制檔案為elf檔案。在linux os上,為了執行可執行檔案,他們是遵循elf格式的,通常gcc o test test.c,生成的test檔案就是elf格式的。執行elf檔案時核心會使用...
可執行檔案格式elf和bin
常用的可執行檔案包含兩類 原始二進位制檔案 bin 和可載入執行的二進位制檔案,在linux中可載入執行的二進位制檔案為elf檔案。在linux os上,為了執行可執行檔案,他們是遵循elf格式的,通常gcc o test test.c,生成的test檔案就是elf格式的。執行elf檔案時核心會使用...
可執行檔案格式詳述,ABI和loader
上回書說到可執行檔案的格式,這一節詳細描述一下。可執行檔案是由頭和體組成的。這跟別的複雜一點的檔案一樣。它的體分成一些叫做節 section 的東西,這是它的特色。另外比較有特色的東西是 我們一般把可執行檔案叫做程式的影像 image 唔,這個叫法也不賴。可執行檔案的價值在於執行,執行的程式也就是活...