2010-02-04 13 views
8

का उपयोग कर .o फ़ाइल को कैसे लिंक कर सकता हूं। मैं एक .cc फ़ाइल को संकलित करने के लिए g ++ का उपयोग करने का प्रयास कर रहा हूं, और मुझे इसे .o फ़ाइल को लिंक करने की आवश्यकता है।मैं g ++

तो मैं करने की कोशिश की:

$g++ -o client -I../ipc -L../messages.o client.cc 
/usr/bin/ld: error: ../messages.o: can not read directory: Not a directory 

और मैं कोशिश की है:

$g++ -o client -I../ipc -l../messages.o client.cc 
/usr/bin/ld: error: cannot find -l../messages.pb.o 
$$ ls -l ../messages.o 

-rw-r - r-- 1 hap497 hap497 227,936 2010-02-03 22:32 ../messages.o

क्या आप कृपया मुझे बता सकते हैं कि एक .o फ़ाइल में कैसे लिंक करें?

धन्यवाद।

उत्तर

13
$g++ -o client -I../ipc client.cc ../messages.o 
+6

यह कंधा ऐसा करता है। ओपी की समस्या यह है कि -L पुस्तकालयों की खोज करने के लिए पथ निर्दिष्ट करता है, और -l उस पथ में खोजने के लिए लाइब्रेरी निर्दिष्ट करता है। एक ऑब्जेक्ट फ़ाइल को केवल तर्क के रूप में दिया जाना चाहिए। –

+0

धन्यवाद। मैंने '$ g ++ -o क्लाइंट-आई ../ ipc client.cc ../messages.o' की कोशिश की है, लेकिन यह संदेशों को बदल देता है। आपको libprotobuf.a लाइब्रेरी की आवश्यकता है। तो मैंने कोशिश की 'g ++ -o क्लाइंट- I ../ ipc client.cc -l/usr/local/lib/libprotobuf.a -lpthread ../messages.o; और मुझे अभी भी '/ usr/bin/ld: ../messages.o: function ipc :: protobuf_AssignDesc_messages_2eproto(): ipc/messages.pb.cc: 33: त्रुटि:' google :: protobuf :: के लिए अपरिभाषित संदर्भ DescriptorPool :: gener_pool() ' मैं और विचारों के लिए सराहना करता हूं? – n179911

+2

'-l/usr/local/lib/libprotobuf.a' के बजाय, केवल '-lprotobuf' आज़माएं। '/ usr/local/lib' शायद आपके डिफ़ॉल्ट पथ में है; यदि नहीं, तो इसे '-L/usr/local/lib' के साथ जोड़ें। '-l' विकल्प अंत में' lib 'और' .a 'को अंत में जोड़ता है। –

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