預編譯:處理巨集定義,注釋,#include等
編譯:將.c .s檔案編譯為機器碼.o檔案
strip:把可執行程式中的符號資訊去掉,節省空間(debug版和release版)
objcopy:可執行程式生成可燒錄的映象bin檔案
程式段:**段、資料段、bss段(zi段)、自定義段
段是程式的一部分,給段命名為了在鏈結指令碼中用段名來核實位置
段名有兩種:一種先天性,編譯器內部定好的,另一種後天性,由程式設計師自定義
先天性段名:
**段:(.text),又叫wenb文字段,就是編譯器將函式編譯生成的東西
資料段:(.data)資料段就是c語言有顯示初始化為非0的全域性變數
bss段:又叫zi(zero initial)段,就是零初始化段,對應c語言中初始化為0的全域性變數
後天性段名:
段名,段屬性和特徵都由程決定
GNU鏈結指令碼學習(1)
最簡單的鏈結指令碼只有乙個命令 sections 使用 sections 命令描述輸出檔案記憶體布局。sections 命令是非常強大的,在這我們將解釋它的簡單用法。現在假設你的程式只是由單一 段 初始化數段和未初始化資料段,分別對應 text data bss 的段名。再假設輸入檔案中也只出現這些...
linux學習(十一) 鏈結指令碼
鏈結指令碼,其實是個規則檔案.是程式設計師用來指導鏈結器工作的,鏈結器會參考鏈結指令碼,並使啟動的使用規定的規則來處理.o檔案中的那些段,將其鏈結成乙個可執行程式.段 程式中有分為各個不同的段 段名分為2中 一種是編譯器鏈結器內部定好的,這是先天的名字,另外一種是程式設計師自己指定的,自定義的段名....
Linux鏈結指令碼學習 lds
l一 概論 ld gnu的鏈結器.用來把一定量的目標檔案跟檔案檔案鏈結在一起,並重新定位它們的資料,鏈結符號引用.一般編譯乙個程式時,最後一步就是執行ld進行鏈結 每乙個鏈結都被乙個鏈結指令碼所控制,這個指令碼是用鏈結命令語言書寫的.二 鏈結指令碼 鏈結指令碼的乙個主要目的是描述輸入檔案中的各個段 ...