1.對于C/C++語言來說,編譯器默認函數和初始化了的全局變量為強符號,未初始化的全局變量為若符號。
2.強符號規則:一、不允許強符號被多次定義。二、如果一個符號在某目標文件中是強符號,在其他文件中是若符號,那么選擇強符號
3.如果一個符號在所有的目標文件中都是若符號,則選擇其中占用空間最大的一個如:A定義全局變量GLOBAL為INT型,占4個字節,目標B定義GLOBAL為DOULBE型,占8個字節,那么目標文件A和B鏈接后,符號GLOBAL占8個字節。
4.強引用,對外部目標文件的符號引用在目標文件被最終鏈接成可執行文件時,它們必須要被正確決議,如果沒有找到該符號的定義,鏈接器就會報符號未定義錯誤,這種被稱為強引用。與之相對應的還有一種弱引用,原理與強引用一模一樣,只不過鏈接器不認為這是一個錯誤。
5.鏈接時符號未定義,導致這個問題的情況非常多,最常見的一般就是鏈接時缺少某個庫?;蛘咻斎肽繕宋募窂讲徽_或符號的聲明與定義不一樣。