2014-11-26 23 views
5

Ben ilk taahhüt git yani taahhüt oluşturmaya çalışıyordum bengcc hata bağlayan tanımsız referans kitaplığı Çözme

$ 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) 

aşağıda gösterildiği gibi Yani bu bazı bağlayıcı hata olduğunu bir bağlayıcı hata olduğunu karşılaştığı neler e83c516 . Onu aramaya çalıştım, yukarıdaki hata mesajını kullanarak biraz şansla çözmek için birkaç yer aradım. Esas olarak, yardımcı olan stackoverflow'tan fazla bağlantı yoktu. Aşağıda anlamaya çalıştığım süreci açıklıyorum.

cevap

9

Bana bağlantı veren kütüphaneyi açıklayan this really nice post'u okudum. Önce benzer bir problemle karşılaşan herkesi okumayı öneriyorum.

Hata iletisini incelemek için yeni kullanıcıya yardımcı olacağım. Sorun şu ki, kripto kütüphanesini bulamıyor. Bu yüzden önce bu kütüphaneyi bağlamamız gerekecek.

LIBS kitaplığı listesine -lcrypto eklersiniz. Bunu nasıl anladım. /usr/bin/ld: update-cache.o: undefined reference to symbol '[email protected]@libcrypto.so.10' hata iletisinde eksik kitaplığa bakın. Şimdi

/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 

ne biliyorsun: Sen benzer bir hata mesajı almak Bunu yaptıktan sonra .so.10

LIBS= -lssl -lcrypto 

kripto bölüm lib gelen kripto anlamaya ihtiyacımız yapmak. -lz kitaplığı ekleyin. Sonunda LIBS benzer bağlayıcı hataları çözmek (ve ilk GYTE taahhüt derleme) nasıl

LIBS= -lssl -lcrypto -lz 

aşağıdaki gibi görünüyor.

Bu yardımcı olur umarım :)