2010-11-19 9 views
6

मैं, json-c-0.9 परीक्षण बाइनरी संकलित करने के लिए कोशिश कर रहा हूँ, जबकि स्थिर libjson.a, जो मैं का निर्माण किया है को जोड़ने और /path/to/json-c-0.9/lib में बैठा होता है:क्या मैं JSON-सी स्थिर पुस्तकालय के साथ जोड़ने के लिए संकलक विकल्पों में याद आ रही है?

/path/to/json-c-0.9/test1.c:17: undefined reference to `json_object_new_string'               
/path/to/json-c-0.9/test1.c:18: undefined reference to `json_object_get_string'               
/path/to/json-c-0.9/test1.c:19: undefined reference to `json_object_to_json_string'              
/path/to/json-c-0.9/test1.c:20: undefined reference to `json_object_put'                
/path/to/json-c-0.9/test1.c:22: undefined reference to `json_object_new_string' 
etc. 

:

$ gcc -g -v -Wall -std=gnu99 -static -L/path/to/json-c-0.9/lib -ljson test1.c -o test1             

मैं प्रपत्र के कई त्रुटियों मिल परीक्षण बाइनरी संकलित करने की कोशिश में मुझे क्या याद आ रही है? आपके सुझाव के लिए धन्यवाद।

उत्तर

9

स्थैतिक लिंकिंग के साथ, जीसीसी केवल उन प्रतीकों को लाने की कोशिश करता है जिनकी आवश्यकता पहले से ही हुई है। आपके मामले में, आप अपनी स्रोत फ़ाइलों से पहले -ljson पास करते हैं, इसलिए जीसीसी स्थिर पुस्तकालय में लाता है और इसके लिए कुछ भी आवश्यकता नहीं है, फिर अपना कोड बनाने का प्रयास करता है।

लाइब्रेरी को अपने कोड के बाद लिंक करने के लिए रखें।

$ gcc -g -v -Wall -std=gnu99 -static -L/path/to/json-c-0.9/lib test1.c -o test1 -ljson 
+0

आपने मेरा दिन बनाया! धन्यवाद। – kR105

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