2010-09-27 17 views
36

Quando provo a costruire il seguente programma:ld: libreria non trovato per -lcrt0.o su OSX 10.6 con gcc/clang bandiera -static

#include <stdio.h> 

int main(void) 
{ 
    printf("hello world\n"); 
    return 0; 
} 

Su OS X 10.6.4, con i seguenti flag :

gcc -static -o blah blah.c 

si restituisce questo:

ld: library not found for -lcrt0.o 
collect2: ld returned 1 exit status 

Qualcun altro ha incontrato questo, o è qualcosa che nessun altro è stato colpito con ancora? Qualche correzione?

Grazie

risposta

46

Questo non funzionerà. Dalla pagina man per gcc:

Questa opzione non funziona su Mac OS X a meno che tutte le librerie (tra cui libgcc.a) sono stati anche compilato con -static. Poiché non viene fornita né una versione statica di libSystem.dylib né crt0.o, questa opzione non è utile alla maggior parte delle persone.

+0

Grazie. Mi è utile solo perché sono interessato al reverse engineering: P – browneye

+1

@browneye: sei riuscito a capire come fare il reverse engineer su mac senza statico ??? – triple

0

Si può anche provare LLVM LLD linker - ho fatto la versione precompilati per i miei due principali sistemi operativi - https://github.com/VerKnowSys/Sofin-llds

Questo mi permette di collegare per exmple: "Qemu" correttamente - che è impossibile con ld preinstallato da Mela.

E l'ultimo è - per compilare GCC con libstdC++ (non).

+0

Vale la pena menzionare anche - potrebbe richiedere lo stesso LLVM 3.9 con libC++ compilato - per supportare "-static -lC++" passato al linker. – dmilith

Problemi correlati