聯結器如何解析多重定義的全域性符號

2021-10-12 16:37:35 字數 517 閱讀 7409

聯結器的輸入是一組可重定位目標模組。每個模組定義一組符號,有些是區域性的(只對定義該符號的模組可見)有些是全域性的(對其他模組可見的)。如果多個模組定義同名的全域性符號,會發生什麼?

在編譯的時候,編譯器向彙編器輸出每個全域性符號,或者是強或者是弱。而彙編器把這個資訊隱含地編碼在可從定位的目標檔案的符號表裡。函式和已重定位目標檔案的符號表裡。

函式和已初始化的全域性變數是強符號。

未初始化的全域性變數是弱符號。

根據強弱符號的定義,linux聯結器使用下面的三條規則來處理多重定義的符號。

(1)不允許有多個同名的強符號。

(2)如果有乙個強符號很多個弱符號同名,那麼選擇強符號。

(3)如果有多個弱符號同名,那麼從這些弱符號中任意選擇乙個。

如何區別FFC聯結器和FPC聯結器

接器領域中,ffc聯結器和fpc聯結器常常讓人混淆。雖然兩者都是柔性電纜聯結器,但是ffc聯結器以及fpc聯結器還是有一定程度上的區別。柔性扁平電纜 flexible flat cable 聯結器,fpc是柔性印製線路 flexible print circuit 兩者的製造上來講,他們線路形成的方...

汽車聯結器標準對聯結器使用環境的定義

當前聯結器標準非常多,從較早的國際標準iso 8092 sae標準uscar 2,到目前中國最新修訂的行業標準qc t 1067 2017 替代qc t 417 同時很多的汽車企業也定義了屬於自己企業的聯結器標準,如大眾公司的vw 75174 通用的gmw 3191 上汽集團的smtc 3 862 ...

linker如何解析多處定義的全域性符號 讀書摘記

from 深入理解計算機系統 對於全域性符號的引用解析,當編譯器遇到乙個不是在當前模組中定義的符號 變數或函式名 時,它會假設該符號是在其他某個模組中定義的,生成乙個linker符號表表目,並把它交給linker處理。如果linker在它的任何輸入模組中都找不到這個被引用的符號,它就輸出一條錯誤資訊...