Rust ha bisogno di linker esterni (ad esempio GCC) per generare output finale. Perché non fornisce uno in bundle? Ci sono linguaggi simili?
Rust ha bisogno di linker esterni (ad esempio GCC) per generare output finale. Perché non fornisce uno in bundle? Ci sono linguaggi simili?
Rust richiede un linker per generare output finale. È solo "esterno" in quanto è un programma separato dal compilatore che genera file oggetto.
Lo stesso vale per la maggior parte dei compilatori C e C ++ e probabilmente un sacco di altri linguaggi compilati, come Swift, Ada e Fortran.
Utilizzare il linker di sistema invece di raggruppare i propri è utile per garantire la compatibilità. Sicuramente, Rust potrebbe raggruppare LLD, ma quale sarebbe il vantaggio rispetto all'utilizzo del linker di sistema su Linux, o del bundling di MinGW (che è comunque necessario) su Windows e utilizzando il LD all'interno? (O se si usa l'ABI MSVC, si vorrà comunque installare Visual Studio, quindi link.exe è disponibile.)
Inoltre, fare affidamento su un driver del compilatore esterno per l'invocazione del linker semplifica il compilatore ruggine, poiché le invocazioni del linker tendono a essere complicate e piene di magia nera specifica della piattaforma. Reimplementare questa logica sarebbe una perdita di tempo.
Leggi altre domande sui tag compilation rust