弱符號

弱符號 （ Weak symbol ） 是鏈接器在生成ELF文件的過程中使用的一種特殊屬性符號 。 默認情況下 ， 如果沒有特別聲明 ， 目標文件裏面的符號都是強符號 。 在鏈接過程中 ， 一個強符號會優先於一個同名的弱符號 。 相比之下 ， 兩個同名強符號一起鏈接會出現鏈接錯誤 。 當鏈接一個可執行文件 ， 弱符號可以不定義 。 但對於強符號 ， 如果沒有定義 ， 連接器會產生一個 “ 符號未定義 ” 錯誤 （ undefined symbol ） 。 使用弱符號的目的是 ， 當不確定這個符號是否被定義的情況下 ， 鏈接器也可以成功鏈接出ELF文件 ， 適用於某些模塊還未實現的情況下 ， 其他模塊的先行調試 。 弱符號在C語言和C + + 語言的規範裏面沒有被提及 ， 所以使用弱符號的代碼 ， 移植性不是非常好 。