2010-09-27 11 views
36

जब मैं निम्नलिखित कार्यक्रम बनाने की कोशिश: निम्नलिखित झंडे के साथld: पुस्तकालय जीसीसी/बजना स्थैतिक ध्वज के साथ पर OSX 10.6 -lcrt0.o के लिए नहीं मिला

#include <stdio.h> 

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

ओएस एक्स 10.6.4 पर, :

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

किसी और इस का सामना करना पड़ा है, या यह कुछ ऐसा है जो किसी और नूने अभी तक के साथ प्रभावित हुआ है है है:

gcc -static -o blah blah.c 

यह इस रिटर्न? कोई फिक्स?

धन्यवाद

उत्तर

46

यह काम नहीं करेगा। gcc के लिए man पृष्ठ से:

यह विकल्प मैक ओएस एक्स पर काम नहीं करेगा जब तक कि (libgcc.a सहित) सभी पुस्तकालयों भी स्थैतिक के साथ संकलित किया गया है। चूंकि libSystem.dylib और न ही crt0.o का एक स्थिर संस्करण प्रदान किया गया है, यह विकल्प अधिकांश लोगों के लिए उपयोगी नहीं है।

+0

धन्यवाद। यह मेरे लिए उपयोगी है क्योंकि मुझे रिवर्स इंजीनियरिंग में दिलचस्पी है: पी – browneye

+1

@browneye - क्या आप यह समझने में सक्षम थे कि बिना मैक पर मैक पर इंजीनियर को कैसे उलटा जाए ??? – triple

0

तुम भी LLVM एलएलडी लिंकर कोशिश कर सकते हैं - मैं अपने दो प्रमुख OSes के लिए पहले से बनाए गए संस्करण था - https://github.com/VerKnowSys/Sofin-llds

यह भी मुझे exmple के लिए लिंक करने के लिए अनुमति देता है: ठीक से "QEMU" - जिसके द्वारा पूर्व-स्थापित ld के साथ असंभव है सेब।

और आखिरी वाला है - libstdC++ (नहीं) के साथ स्वयं को जीसीसी बनाने के लिए।

+0

इसके अलावा उल्लेखनीय है - लिंकर को पास किए गए "-स्टैटिक -एलसी ++" का समर्थन करने के लिए इसे lcC++ में संकलित के साथ एलएलवीएम 3.9 की आवश्यकता हो सकती है। – dmilith

संबंधित मुद्दे