Linux

什麼是黃金鍊接器?

  • October 10, 2019

以前有人用過gold連結器嗎?為了連結一個相當大的項目,我不得不使用它而不是 GNU ld,它拋出了一些錯誤並且無法連結。

連結器如何gold能夠連結ld失敗的大型項目?某處是否存在某種記憶技巧?

gold連結器被設計為特定於 ELF 的連結器,旨在生成比 BFD ld(“傳統”GNU binutils 連結器)更易於維護和更快的連結器。作為副作用,它確實能夠使用比 BFD 更少的記憶體連結非常大的程序ld,這可能是因為要處理的抽象層更少,並且因為連結器的資料結構更直接地映射到 ELF 格式。

我不確定是否有很多文件專門解決了兩個連結器之間的設計差異以及它們對記憶體使用的影響。各種 GNU 連結器的作者 Ian Lance Taylor 有一系列關於連結器的非常有趣的文章,其中解釋了導致gold. 他寫道_

我現在正在使用的連結器,稱為黃金,將是我的第三個。它是專門的 ELF 連結器。再一次,目標是速度,在這種情況下比我的第二個連結器更快。多年來,通過添加對 ELF 和共享庫的支持,該連結器已顯著減慢速度。這種支持是修補的,而不是設計的。

(第二個連結器是 BFD ld。)

引用自:https://unix.stackexchange.com/questions/545699