Perché Rust richiede linker esterni? Altre lingue simili?

2

Rust ha bisogno di linker esterni (ad esempio GCC) per generare output finale. Perché non fornisce uno in bundle? Ci sono linguaggi simili?

    
posta Frederick Zhang 28.09.2016 - 11:39
fonte

1 risposta

10

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.

    
risposta data 28.09.2016 - 11:53
fonte

Leggi altre domande sui tag