2014-11-26 7 views
5

मैं निर्माण करने के लिए पहले Git यानी की प्रतिबद्ध प्रतिबद्ध कोशिश कर रहा था e83c516 मैं क्या सामना करना पड़ा के रूप में नीचेजीसीसी में त्रुटि जोड़ने अपरिभाषित संदर्भ पुस्तकालय को सुलझाने

$ make                      
gcc -g -Wall -o update-cache update-cache.o read-cache.o -lssl                   
/usr/bin/ld: update-cache.o: undefined reference to symbol '[email protected]@libcrypto.so.10'            
/usr/bin/ld: note: '[email protected]@libcrypto.so.10' is defined in DSO /lib64/libcrypto.so.10 so try adding it to the linker command line 
/lib64/libcrypto.so.10: could not read symbols: Invalid operation                  
collect2: error: ld returned 1 exit status                        
make: *** [update-cache] Error 1                          



$ cat Makefile                    
CFLAGS=-g -Wall                       CC=gcc                                 
PROG=update-cache show-diff init-db write-tree read-tree commit-tree cat-file               

all: $(PROG)                                 
install: $(PROG)                              
     install $(PROG) $(HOME)/bin/                                                       
LIBS= -lssl                                  
init-db: init-db.o 

update-cache: update-cache.o read-cache.o 
     $(CC) $(CFLAGS) -o update-cache update-cache.o read-cache.o $(LIBS) 

show-diff: show-diff.o read-cache.o 
    $(CC) $(CFLAGS) -o show-diff show-diff.o read-cache.o $(LIBS) 

दिखाया गया है एक लिंकर त्रुटि थी तो वहाँ इस में कुछ लिंकर त्रुटियाँ हैं । मैंने इसकी तलाश करने की कोशिश की, थोड़ी किस्मत के साथ उपरोक्त त्रुटि संदेश का उपयोग करके इसे खोजने के लिए कई स्थानों की खोज की। मुख्य रूप से स्टैक ओवरफ्लो से बहुत अधिक लिंक नहीं थे जो मदद करते थे। मैं उस प्रक्रिया को समझा रहा हूं जिसे मैंने नीचे निकालने के लिए लिया था।

उत्तर

9

मैंने this really nice post को मुझसे जोड़ने वाली लाइब्रेरी समझाया। मैं सुझाव दूंगा कि किसी को भी इसे पढ़ने के लिए इसी तरह की समस्या का सामना करना पड़ेगा।

तो मैं त्रुटि संदेश को विच्छेदन करने के लिए नए उपयोगकर्ता की सहायता करूंगा। समस्या यह है कि यह क्रिप्टो लाइब्रेरी को खोजने में सक्षम नहीं है। तो हमें पहले उस पुस्तकालय को लिंक करने की आवश्यकता होगी।

आप LIBS लाइब्रेरी सूची में -lcrypto जोड़ते हैं। मैंने इसे कैसे समझ लिया। त्रुटि संदेश /usr/bin/ld: update-cache.o: undefined reference to symbol '[email protected]@libcrypto.so.10' में लापता लाइब्रेरी को देखें। आप जानते हैं कि

/usr/bin/ld: update-cache.o: undefined reference to symbol 'deflate'                 
/usr/bin/ld: note: 'deflate' is defined in DSO /lib64/libz.so.1 so try adding it to the linker command line       
/lib64/libz.so.1: could not read symbols: Invalid operation                   
collect2: error: ld returned 1 exit status 

अब: आप क्रिप्टो क्रिप्टो से भाग lib .so.10

LIBS= -lssl -lcrypto 

एक बार जब आप यह है कि आप एक ऐसी ही त्रुटि संदेश मिलता है यह पता लगाने की जरूरत है करने के लिए। -lz लाइब्रेरी जोड़ें। तो अंत में LIBS नीचे

LIBS= -lssl -lcrypto -lz 

है कि कैसे आप समान लिंकर त्रुटियों का समाधान (और पहली Git के लिए प्रतिबद्ध संकलन) एक तरह दिखता है।

उम्मीद है कि यह मदद करता है :)

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