讓我們總結一下:編譯器把乙個cpp編譯為目標檔案的時候,除了要在目標檔案裡寫入cpp裡包含的資料和**,還要至少提供3個表:未解決符號表,匯出符號表和位址重定向表。
未解決符號表提供了所有在該編譯單元裡引用但是定義並不在本編譯單元裡的符號及其出現的位址。
匯出符號表提供了本編譯單元具有定義,並且願意提供給其他編譯單元使用的符號及其位址。
位址重定向表提供了本編譯單元所有對自身位址的引用的記錄。
鏈結器進行鏈結的時候,首先決定各個目標檔案在最終可執行檔案裡的位置。然後訪問所有目標檔案的位址重定向表,對其中記錄的位址進行重定向(即加上該編譯 單元實際在可執行檔案裡的起始位址)。然後遍歷所有目標檔案的未解決符號表,並且在所有的匯出符號表裡查詢匹配的符號,並在未解決符號表中所記錄的位置上 填寫實際的位址(也要加上擁有該符號定義的編譯單元實際在可執行檔案裡的起始位址)。最後把所有的目標檔案的內容寫在各自的位置上,再作一些別的工作,一 個可執行檔案就出爐了。
C 符號表匯出
編譯符號表匯出示例 使用gcc編譯鏈結引數 version script 控制動態符號表,如想 使用鏈結引數 retain symbols file 控制靜態符號表,version script 控制動態符號表,後面都是接含有匯出符號的檔案的名字。這兩個引數在移植windows下的動態庫很有用,wi...
邏輯符號表
邏輯符號表 跳轉到 導航,搜尋 在邏輯中,經常使用一組符號來表達邏輯結構。因為邏輯學家非常熟悉這些符號,他們在使用的時候沒有解釋它們。所以,給學邏輯的人的下列 列出了最常用的符號 它們的名字 讀法和有關的數學領域。此外,第三列包含非正式定義,第四列給出簡短的例子。要注意,在一些情況下,不同的符號有相...
數學符號表
符號 名稱定義 舉例讀法 數學領域 等號y xy1 1 2 等於所有領域 不等號x y xy 不等於 所有領域 嚴格不等號 xyx3 4 5 4 小於,大於 序理論 不等號x y x yx 3 4 5 5 5 4 5 5 小於等於,大於等於 序理論 加號 4 6 表示 4 加 6。2 7 9加算術 ...