不同架構的機器碼 與 匯編語言 都不可移植, 且二者一一對應
c語言中三種成分:
1.分號結尾的叫做語句? ?語句可以讓CPU執行,可以進行預處理,編譯等生成機器碼
2.#開頭的為預處理指令 不帶分號? CPU無法執行
3.注釋,CPU不執行
1.C語言執行的四個步驟
a.預處理:進行宏定義的替換,例如#define等,刪除注釋,頭文件的展開,例如#include,預處理后的文件為.i文件;
b.編譯:處理過的C語言生成匯編語言,生成.s文件
c.匯編:將匯編文件生成二進制機器碼,生成.o文件
d.鏈接:調用庫,庫為編譯好的二進制文件,庫文件是區分架構的
2.區分elf文件和bin文件
exe為Windows系統下可執行文件
elf為Linux系統下可執行文件,為二進制文件
elf運行在Linux系統之上的可執行文件,需要操作系統
bin文件是運行在CPU執行,只包含匯編生成的機器碼以及全局變量對應的機器碼
,不包含其他任何系統信息。
data和bss段可分配全局變量的空間,局部變量只有程序運行起來的時候在棧上分配空間。?
?
3..簡述交叉編譯工具鏈中strip及objdump工具的主要用途是什么?
strip刪除符號表中的符號,減小elf文件的大小,但不影響程序的運行
? objdump顯示文件的信息
objcopy可以將elf文件生成bin文件