Articles of linker

Cosa fanno i linker?

Mi sono sempre chiesto. So che i compilatori convertono il codice che scrivi in ​​binari, ma cosa fanno i linker? Sono sempre stati un mistero per me. Capisco grossolanamente cos’è “linking”. È quando i riferimenti alle librerie e ai framework vengono aggiunti al binario. Non capisco niente al di là di questo. Per me “funziona”. […]

file crti.o mancante

Sto costruendo un progetto usando una catena di strumenti GNU e tutto funziona fino a quando non riesco a collegarlo, dove il linker si lamenta che manca / non riesce a trovare crti.o Questo non è uno dei miei file object, sembra essere correlato a libc ma non riesco a capire perché avrebbe bisogno di […]

Qual è l’opzione -fPIE per gli eseguibili indipendenti dalla posizione in gcc e ld?

Come cambierà il codice, ad esempio le chiamate di funzione?

Utilizza le librerie statiche e collegate dynamicmente in gcc

Devo distribuire un binario che verrà eseguito su quante più distribuzioni Linux x86 ansible. Ciò significa che devo colbind staticamente alcune librerie, come glibc, perché l’utente potrebbe non avere la versione che uso. Altre librerie devono essere collegate dynamicmente, come fontconfig, perché si basa su un formato di file cache e su posizioni hard coded […]

variabili statiche in una funzione in linea

Ho una funzione che è dichiarata e definita in un file di intestazione. Questo è un problema tutto da solo. Quando quella funzione non è in linea, ogni unità di traduzione che utilizza quell’intestazione ottiene una copia della funzione e quando sono collegate insieme, vengono duplicate. Ho “risolto” questo rendendo la funzione in linea, ma […]

GNU gcc / ld – avvolge una chiamata al simbolo con il chiamante e il chiamato nello stesso file object

per chiarire, la mia domanda si riferisce all’involucro / intercettazione di chiamate da una funzione / simbolo a un’altra funzione / simbolo quando il chiamante e il chiamato si definiscono nella stessa unità di compilazione con il compilatore e il linker GCC. Ho una situazione simile alla seguente: /* foo.c */ void foo(void) { /* […]

Modello C ++, errore di collegamento

Ho un problema nel chiamare una class template che ho. Ho dichiarato un nuovo nome di tipo Array, che è un modello; Nel file .hpp: template class Array { public: Array(); }; Nel file .cpp: template Array::Array() { //Do something } In principale: Array arr; Ottengo l’errore di collegamento: simbolo esterno non risolto al ctor. […]

gcc non includerà correttamente math.h

Ecco un esempio minimale che illustra il mio problema test.c: #include #include main () { fmod ( 3, 2 ); } Ed ecco il comando che sto emettendo per compilare test.c gcc -lm test.c -o test Ed ecco l’output che ottengo quando rilascio il comando sopra /tmp/ccQmRk99.o: In function `main’: test.c:(.text+0x3e): undefined reference to `fmod’ […]

Come link statico su OS X

Sto cercando di collegarmi a una libreria statica su OS X. Ho usato il flag -static nel comando gcc ma ho ricevuto il seguente messaggio di errore: ld_classic: imansible trovare il file per: -lcrt0.o collect2: ld ha restituito 1 stato di uscita Ho guardato nelle pagine man e si legge qualcosa come: Questa opzione non […]

Perché ottengo l’errore “riferimento non definito a sqrt” anche se includo l’intestazione math.h?

Sono molto nuovo di C e ho questo codice: #include #include int main(void) { double x = 0.5; double result = sqrt(x); printf(“The square root of %lf is %lf\n”, x, result); return 0; } Ma quando lo compilo con: gcc test.c -o test Ottengo un errore come questo: /tmp/cc58XvyX.o: In function `main’: test.c:(.text+0x2f): undefined reference […]