LLVM 4中將加入新的LLVM鏈結器LLD

2021-09-17 06:29:04 字數 1327 閱讀 7112

lld將被新增到llvm 4 rc1中,並預設啟用。lld自稱在效能上大大優於gcc ld。雖然該新鏈結器早可用於構建在用的freebsd/amd64基系統(base system),但是這次將其新增到llvm中依然是實驗性的,在出現問題時會回退到rc2。

\\ 在最新發布的freebsd專案季度狀態報告中,下面一段話是對lld進展情況和成熟度的最好實證:

\\

\

上個季度中,lld開發人員做出了很大的進展。隨著變更已提交到lld和freebsd,我們達成了乙個重要的里程碑,即現在可以使用lld鏈結整個freebsd/amd64基系統(核心與使用者層)。

\

\\

此外,bsd專案貢獻的一些補丁使得lld可以鏈結近95%的bsd ports,大約是兩萬五千多個軟體包。

\\ lld工作啟動於2023年五月,目標在於重寫elf(unix)和coff(windows)系統鏈結器以提供更高的效能。據lld開發人員說,新鏈結器在總體上會比gnu gold linker快1.2到2倍,而gnu gold linker本身也是google為改進ld鏈結效能而在內部建立的。事實上,ldd可以比ld和gold快得更多,尤其是編譯大規模**庫時。另一方面,對於小型程式或者大量使用共享庫的程式,ldd的優勢就並非那麼明顯了。和gold一樣,lld並不使用bfd格式去對不同的二進位制檔案格式做抽象。

\\ 尤其值得一提的是,lld非常之小,相比於gold的十六萬五千行**,用於coff鏈結器的ldd只有七千行**,而用於elf鏈結器的是一萬八千行**。此外,它也可以嵌入到靜態庫等程式中,還可用於呼叫lld::elf::link入口點。

\\ 如果想在llvm 4可用之前就試用lld,你可以通過構建原始檔得到:

\\

\  $svn co  llvm\  $cd llvm/tools\  $svn co  lld\  $cd ../../..\  $mkdir build\  $cd build\  $cmake -g 「ninja」 -dcmake_build_type=」release」 -dcmake_install_prefix=」your_preferred_location」 ../llvm\  $ninja lld\  $ninja install\
\\

一旦ldd編譯完成,最安全可靠的使用方法是將ld邏輯鏈結到ld.lld,這同樣會使ldd與gcc一起工作。或者你也以使用llvm的-fuse-ld=lld選項,這樣就不必再做邏輯鏈結了。

\\檢視英文原文:lld, llvm』s new linker, coming to llvm 4

\\ 感謝冬雨對本文的審校。

\

LLVM 4中將加入新的LLVM鏈結器LLD

lld將被新增到llvm 4 rc1中,並預設啟用。lld自稱在效能上大大優於gcc ld。雖然該新鏈結器早可用於構建在用的freebsd amd64基系統 base system 但是這次將其新增到llvm中依然是實驗性的,在出現問題時會回退到rc2。在最新發布的freebsd專案季度狀態報告中,...

LLVM 4中將加入新的LLVM鏈結器LLD

lld將被新增到llvm 4 rc1中,並預設啟用。lld自稱在效能上大大優於gcc ld。雖然該新鏈結器早可用於構建在用的freebsd amd64基系統 base system 但是這次將其新增到llvm中依然是實驗性的,在出現問題時會回退到rc2。在最新發布的freebsd專案季度狀態報告中,...

LLVM4更新 簡化物件定義

簡介 llvm4.0 更新 在xcode4.4引入 中,新增了一些新的簡便 書寫的方法 新增文字的數字,陣列,字典,以及表示式的語法 得益於 llvm 編譯器 4.0 的更新,增加了許多新特性,其中包括更方便的 輸入。這一更新可大大提高寫 的效率。這要在定義時使用 符號,正如nsstring定義操作...