우분투에 오픈 소스 프로젝트를 설치하려고하는데, make 프로세스가 updateDB.c 클래스의 메소드에서 실패합니다.make가 컴파일되지 않았습니다. 'EVP_DigestUpdate에 대한 정의되지 않은 참조가 있습니다.
static uint16_t update_cache_hash(char *buff, int size) {
unsigned char md_hash[EVP_MAX_MD_SIZE];
unsigned int md_len;
uint16_t hash;
EVP_DigestUpdate(&global_table.ctx, buff, size);
EVP_DigestFinal_ex(&global_table.ctx, md_hash, &md_len);
if (md_len < 2) {
ps_log(PS_LOG_ERROR, "EVP_DigestFinal_ex returned a short hash.\n");
return 0;
}
hash = ((uint16_t) md_hash[md_len - 2] << 8) | md_hash[md_len - 1];
hash = UPDATE_CACHE_MASK(hash);
return hash;
}
이 클래스의 상단은 내가이 문장을
#include <openssl/evp.h>
포함이 있습니다이 실패 방법 update_cache_hash입니다
updateDB.o: In function `update_cache_hash':
/usr/local/src/bgpinspect-0.5/src/updateDB.c:142: undefined reference to `EVP_DigestUpdate'
/usr/local/src/bgpinspect-0.5/src/updateDB.c:143: undefined reference to `EVP_DigestFinal_ex'
collect2: error: ld returned 1 exit status
make[1]: *** [BGPdb] Error 1
make[1]: Leaving directory `/usr/local/src/bgpinspect-0.5/src'
make: *** [all] Error 2
: 컴파일하는 동안, 난이 오류가 libssl-dev와 함께 내 컴퓨터에 openssl이 설치되어 있습니다. /usr/include/openssl/evp.h
: 그것은 내가이 길에 evp.h이 등 C와 정적 링크 에 새로운 오전부터 그 오류를 제공 이유를 알아낼 수 없습니다 어떻게 makefile을 변경하거나이 문제를 해결할 수 있습니까? 왜냐하면 make가이 경로를 볼 수 없기 때문입니다. /usr/include/openssl/evp.h
-lcrypto가 트릭을했습니다. –
이 문제가있는 사람을위한 팁이 하나 더 있다면,'-lssl'이'-lcrypto'보다 먼저 나오는지 확인하십시오. 순서는 중요합니다. – robert