2010-09-27 24 views
36

Lorsque je tente de construire le programme suivant:ld: bibliothèque introuvable pour -lcrt0.o sur Mac OS X 10.6 avec gcc/clang -static drapeau

#include <stdio.h> 

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

Sur OS X 10.6.4, avec les indicateurs suivants :

gcc -static -o blah blah.c 

il retourne ceci:

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

quelqu'un at-il rencontré ce, ou est-ce quelque chose qui a été d'autre Noone encore affecté avec? Des correctifs?

Merci

Répondre

46

Cela ne fonctionnera pas. A partir de la page man pour gcc:

Cette option ne fonctionnera pas sous Mac OS X à moins que toutes les bibliothèques (y compris libgcc.a) ont également été compilé avec -static. Comme aucune version statique de libSystem.dylib ou de crt0.o n'est fournie, cette option n'est pas utile à la plupart des utilisateurs.

+0

Merci. Il est utile pour moi purement parce que je suis intéressé par l'ingénierie inverse: P – browneye

+1

@browneye - avez-vous pu comprendre comment faire de l'ingénierie inverse sur mac sans statique ??? – triple

0

Vous pouvez également essayer LLVM éditeur de liens de LLD - Je l'ai fait la version préconstruits pour mes deux systèmes d'exploitation majeurs - https://github.com/VerKnowSys/Sofin-llds

Celui-ci me permet de créer un lien pour exmple: « Qemu » bien - ce qui est impossible avec ld pré-installé par Pomme.

Et le dernier est - pour construire GCC vous-même avec libstdC++ (ne pas).

+0

Il convient également de mentionner - il peut nécessiter LLVM 3.9 lui-même avec compc-in libC++ - pour supporter "-static -lC++" passé à l'éditeur de liens. – dmilith