Quando esamino il codice generato da gcc -v -o proggy.exe proggy.o trovo che la riga di comando si espanda in un grande mucchio di librerie e librerie, tutte collegate tramite collect2.exe. Cos'è successo a ld.exe? Perché non lo vedo? Qualcuno può spiegarmi cosa fa collect2.exe?Che cosa fa collect2.exe?
8
A
risposta
8
collect2
è un'utilità utilizzata per generare una tabella di costruttori che __main
(una funzione generata automaticamente chiamata all'inizio di main
) dipende da. Normalmente non si vede perché è chiamato ld
sul file system, ed è a sua volta chiama il vero ld (tipicamente chiamato real-ld
, anche se collect2 controllerà un numero di posti in cerca di esso)
4
GCC utilizza un'utility chiamata collect2 su quasi tutti i sistemi per organizzare chiamate alle varie funzioni di inizializzazione all'avvio. [link]
Mr. Mrozek, Grazie per la risposta. Domanda successiva: se utilizzo LD.EXE sulla riga di comando, cosa succede al codice? Supponiamo di avere ld.exe -L/some_lib proggy.o -lsome_lib_lib. Come si amplia questo? La tua precedente risposta alla mia domanda iniziale è stata molto illuminante! Grazie, Mark – allynm
Vale la pena notare che i moderni sistemi ELF non avranno bisogno di quella raccolta (che ovviamente è un brutto hackeraggio). Usano le sezioni dei medici e dei datori di ELF per il controllo e i distruttori. –