Použil už někdo linker gold? Chcete-li propojit poměrně velký projekt, musel jsem to použít na rozdíl od GNU ld, který vyhodil několik chyb a nepodařilo se ho propojit.

Jak je gold linker schopný propojit velké projekty, kde ld selže? Existuje někde nějaký trik s pamětí?

Komentáře

  • V čem byly chyby? Pravděpodobně vám ' dojde paměť a ld byl zabit OoM. ld může easilu spotřebovat mnoho GB RAM na velkých projektech v C ++, zatímco gold a zejména lld linkery jsou mnohem efektivnější z hlediska zdrojů.
  • ano ld došlo k chybě nedostatku paměti, ale zlatý linker to dokázal propojit

Odpověď

Linker gold byl navržen jako linker specifický pro ELF, s úmyslem vytvořit udržitelnější a rychlejší linker než BFD ld („tradiční“ linker GNU binutils). Jako vedlejší efekt je skutečně schopen propojit velmi velké programy s menší pamětí než BFD ld, pravděpodobně proto, že je třeba řešit méně vrstev abstrakce a protože data linkeru struktury se přímo mapují do formátu ELF.

Nejsem si jistý, že existuje mnoho dokumentace, která konkrétně řeší rozdíly v designu mezi těmito dvěma linkery a jejich vliv na využití paměti. Existuje velmi zajímavá série článků o linkerech od Iana Lancea Taylora, autora různých linkerů GNU, který vysvětluje mnoho návrhových rozhodnutí vedoucích k gold. píše , že

Linker, na kterém nyní pracuji, zvaný zlato, bude buď můj třetí. Jedná se výhradně o linker ELF. Cílem je opět rychlost, v tomto případě rychlejší než můj druhý linker. Tento linker byl v průběhu let výrazně zpomalen přidáním podpory pro ELF a pro sdílené knihovny. Tato podpora byla opravena, místo aby byla navržena.

(Druhý linker je BFD ld.)

Komentáře

  • bude název ' zlatý ' pocházet z čtení ' ld ' jako ' vést ' a zlato je zjevně cennější než olovo?
  • @Aganju Ne, ' je to jen go s předponou ld.

odpověď

zlatý linker byl napsán, aby se proces propojení podstatně zrychlil. Podle autorky zlata Ian Lance Taylor

V tuto chvíli má zlato pouze jednu významná výhoda oproti stávajícímu linkeru: je rychlejší. Na velkých programech v C ++ jsem měřil, že běží pětkrát rychleji.

Porovnává výkon zlatého linkeru s tradičním linkerem GNU. zlato (na rozdíl od linkeru GNU) nepoužívá knihovnu BFD ke zpracování souborů objektů.

Omezení zlata spočívá v tom, že (na rozdíl od linkeru GNU, který dokáže zpracovat mnoho typů souborů objektů), může propojovat pouze soubory objektů ve formátu ELF.

Pokud jde o problémy, s nimiž se setkáváte při používání GNU linker, zde je zajímavá odpověď na podobnou otázku týkající se SO od Michaela Adama:

Zlatý linker dokonce našel v našem kódu určité problémy se závislostmi, protože se zdá být správnější než klasický s ohledem na některé podrobnosti. Viz např. tento závazek Samba.

odpověď

gold vs ld měřítko

Konkrétní syntetický standard ld vs zlato jsem zveřejnil na: https://stackoverflow.com/questions/3476093/replacing-ld-with-gold-any-experience/53921263#53921263

Shrnutí výsledky: zlato bylo dvakrát až 3x rychlejší než ld.

Tento časový zisk může být obrovským měničem hry na komplexních projektech C ++ s šablonami mimo kontrolu a generováním kódu, protože krok propojení zahrnuje všechny soubory z projektu, a na rozdíl od kompilace, to musí být provedeno vždy, i když změníte jen jeden soubor .cpp.

Takže doba pomalého odkazu činí vývojový cyklus nesnesitelným a je pravděpodobně hlavním důvodem Google do toho vložil zdroje. Představte si zisky čekání 10 s místo 30 s na každou triviální změnu souboru.

Časové zisky syntetického benchmarku také souhlasily se skutečnými zisky, které jsem měl na složitém projektu reálného světa (gem5), jak je také uvedeno v této odpovědi.

Odpověď

V moderních systémech GNU / Linux jsou k dispozici tři linkery:

  • ld , udržováno GNU binutils,
  • zlato , udržováno GNU binutils, „stále v beta testu“,
  • lld , vyvinut jako součást projektu LLVM.

Srovnávací testy rychlosti naleznete na: https://www.phoronix.com/scan.php?page=article&item=lld4-linux-tests&num=2 TL, DR: lld je nejrychlejší, následuje gold, za nímž následuje ld

Některé zdroje uvádějí, že zlatý projekt byl stagnuje a struktura balíčku ve Fedoře to odráží.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *