2013-04-03 8 views
5

मैं निम्नलिखित makefile है:OSX 10.8.3 में X11 उपयोग करना: "ld: पुस्तकालय -lX11 के लिए नहीं मिला"

PROG = draw 
CFLAGS = -w -s -O2 -ansi -DSHM 
XLIBS = -lX11 -lXext -lXmu -lXext -lXmu -lXt -lXi -lSM -lICE 
LIBS = -framework OpenGL 
INCLS = -I/usr/X11R/include -I/share/mesa/include 
LIBDIR = -L/usr/X11/lib -L/usr/X11R6/lib 
#source codes 
SRCS = draw_main.cpp $(PROG).cpp 
#substitute .cpp by .o to obtain object filenames 
OBJS = $(SRCS:.cpp=.o) 

#$< evaluates to the target's dependencies, 
#[email protected] evaluates to the target 

$(PROG): $(OBJS) 
    g++ -o [email protected] $(OBJS) $(LIBDIR) $(LIBS) $(XLIBS) 

$(OBJS): 
    g++ -c $*.cpp $(INCLS) 

clean: 
    rm $(OBJS) 

हर बार जब मैं इसे चलाने के लिए प्रयास करते हैं, मैं निम्नलिखित त्रुटि मिलती है:

ld: library not found for -lX11 
collect2: ld returned 1 exit status 

क्या कोई मुझे यह जानने में मदद कर सकता है कि एक्स 11 के लिए पुस्तकालय ओएसएक्स 10.8.3 में कहां होना चाहिए? मेरे लिए, यह सही दिखता है।

अग्रिम धन्यवाद।

+0

मुझे जोड़ना चाहिए, लाइन: 'LIBS = -framework OpenGL'' XLIBS = -lX11 -lXext -lXmu -lXext -lXmu -lXt -lXi -lSM -lICE' होने के लिए प्रयोग किया जाता था, लेकिन इससे मुझे और भी त्रुटियां मिलीं ओएसएक्स में (हालांकि यह लिनक्स में ठीक काम करता है) और मैंने पढ़ा है कि मुझे इसके बजाय 'फ्रेमवर्क ओपनजीएल' का उपयोग करना चाहिए। – UndefinedReference

+0

क्या आपने libX11.so या libX11.a में/usr/X11/lib में देखा है? – parkydr

+0

@parkydr: मैंने अभी अभी किया है और मैं ईमानदारी से उस फ़ाइल को नहीं देख सकता। क्या मेरी एक्स 11 स्थापना से कुछ गुम है? – UndefinedReference

उत्तर

4

क्या आपने XQuartz इंस्टॉल किया है, जैसा कि यहां बताया गया है: http://support.apple.com/kb/HT5293?

डिफ़ॉल्ट रूप से माउंटेन शेर पर कोई एक्स 11 नहीं है।

+1

यह एक्सकोड के साथ आता है। लेकिन हाँ, मैंने अभी इसे स्थापित किया है। अब यह मुझे बता रहा है कि "प्रतीकों को x86 64 आर्किटेक्चर में पहचाना नहीं गया है" ... जिसका अर्थ है कि मैंने चीजों को और भी बदतर बना दिया है ... मूल रूप से मैं सोच रहा हूं कि मुझे कौन सी फाइल में लिंक करना है मेकफ़ाइल, इस चीज़ को चलाने के लिए। – UndefinedReference

+0

एक्सकोड और एक्स 11 दो पूरी तरह से अलग चीजें हैं। यदि आप माउंटन शेर पर एक्स 11 के आधार पर एक यूनिक्स प्रोग्राम बनाना चाहते हैं तो आपको पहले XQuartz इंस्टॉल करना होगा। मुझे लगता है कि आप इसे 32 बिट्स या 64 बिट्स मोड या दोनों में बना सकते हैं। आपको सावधानी से सामान के बारे में पढ़ने की जरूरत है, मुझे डर है। – piokuc

+0

वास्तव में? क्योंकि ऐसा लगता है कि एक्स 11 एक्सकोड में एक वैकल्पिक इंस्टॉल था और फ़ोल्डर्स मेरे लिए हैं। हालांकि, मैं अभी भी आपकी मदद की सराहना करता हूं और सोच रहा हूं कि, XQuartz इंस्टॉल करने के बाद, क्या मुझे इस मेकफ़ाइल 'LIBDIR = -L/usr/X11/lib -L/usr/X11R6/lib' में जो भी स्थान है, उसे इस लाइन को बदलना होगा XQuartz X11 फ़ोल्डर में डालता है? धन्यवाद। – UndefinedReference

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