什么是符号表、符号解析、符号重定位?
生活随笔
收集整理的這篇文章主要介紹了
什么是符号表、符号解析、符号重定位?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、什么是符號表?
2、何為符號解析和符號重定位?
在鏈接中,將函數和變量統稱為符號。函數名或變量名稱為符號名。
鏈接過程中很關鍵的一部分就是符號的管理,每一個目標文件都會有一個相應的符號表,這個表里記錄了目標文件中所用到的所有符號。
每一個定義的符號有一個對應的值,叫做符號值。對于函數和變量來說,符號值就是它們的地址。
符號表中所有的分類:
1.定義在本目標文件的全局符號,可以被其他目標文件引用。
2.在本目標文件中引用的全局符號,卻沒有定義在本目標文件,這一般叫做外部符號。這里就是引用外部符號。
3.段名,這種符號由編譯器產生,它的值就是其段的起始地址。如目標文件里的.text、.data 段。
4.局部符號,只在編譯單元內部可見。局部符號對于鏈接過程是沒有作用的。
5.行號信息,即目標文件指令與源代碼中代碼行的對應關系。
對于鏈接過程來說,只關注全局符號的相互“粘合”,其它的符號都是次要
符號值(st_value)的幾種情況:
1.在目標文件中,如果是符號的定義并且該符號不是在COMMON塊類型的,則st_value表示該符號在段中的偏移。
2.在目標文件中,如果符號時COMMON塊類型的,則st_value表示該符號的對齊屬性。
3.在可執行文
總結
以上是生活随笔為你收集整理的什么是符号表、符号解析、符号重定位?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梅科尔工作室-牛炳森-鸿蒙笔记4
- 下一篇: 985选择医学还是计算机?