Gold是一種用于ELF檔案的鏈接器,于2008年3月成為官方GNU軟體包并被加入至GNU Binutils中,第一次釋出是在binutils 2.19中。Gold是由Ian Lance Taylor與谷歌的一個小團(tuán)隊(duì)開發(fā)的,其編寫的動機(jī)是要制作一個比GNU連結(jié)器更快的連結(jié)器,特別是對于使用C++編寫的大型應(yīng)用程序。與libtool連結(jié)器不同,Gold并不會使用BFD函式庫來處理目的檔,這限制了其只能處理ELF的目的檔格式,但其也聲稱可以在沒有額外抽象層的情況下有更清晰且更快的實(shí)作。作者提到了完全移除BFD作為從頭開發(fā)新連結(jié)器而非逐步改進(jìn)GNU連結(jié)器的原因。這個重寫也修復(fù)了舊的ld的一些Bug,這些Bug以各種小問題破壞ELF檔案。要在Makefile中指定Gold,可以將LD或LD環(huán)境變量設(shè)定為ld.gold。要透過編譯器選項(xiàng)指定Gold,可以使用GCC選項(xiàng)-fuse-ld=gold。fedora已將Gold從binutils移轉(zhuǎn)到自己的軟體包中,因?yàn)閾?dān)心在谷歌的興趣轉(zhuǎn)移到LLVM后會有軟件腐敗的問題。
軟件功能
在軟件工程領(lǐng)域,Gold鏈接器的開發(fā)是為了提供一個比傳統(tǒng)GNU鏈接器更為高效的工具,尤其是在處理使用C++編寫的大型應(yīng)用程序時。Gold鏈接器的設(shè)計(jì)理念是去除了使用BFD庫來處理目標(biāo)文件的依賴,這一改變雖然使得Gold只能處理ELF格式的目標(biāo)文件,但也因此能夠提供一個更為簡潔和快速的鏈接過程。Gold鏈接器的開發(fā)團(tuán)隊(duì)選擇從零開始構(gòu)建新的鏈接器,而不是對現(xiàn)有的GNU鏈接器進(jìn)行逐步改進(jìn),這一決策的背后是為了解決舊鏈接器中存在的一些導(dǎo)致ELF文件損壞的問題。此外,fedora之所以將Gold鏈接器從binutils中獨(dú)立出來作為單獨(dú)的軟件包,是出于對谷歌可能會減少對Gold的支持并轉(zhuǎn)向LLVM的擔(dān)憂。
參考資料 >