aes 암호화 라이브러리 컴파일도중 EVP_aes_256_ecb 심볼 ld: 치명적 기호 참조 오류에 관해서...
글쓴이: morolty / 작성시간: 월, 2014/05/26 - 3:30오후
./XXXXX.c -lpthread -lposix4 -lnsl -lm -lsocket -lelf -lkvm -lkstat -lnileacct -lcrypt -ldl -lgen 정의되지 않음 첫번째 참조된 기호 파일: EVP_aes_256_ecb /var/tmp//ccgAtksU.o ld: 치명적¸기호 참조 오류. /XXX/XXXXX/XXXXXXXXX에 출력이 기록되지 않음 collect2: ld returned 1 exit status make: *** [AgentProc] Error 1
오류가 발생하였는데요...
동적 라이브러리 링크 중 나오는 에러가 맞는건가요?
계속 들여다본 결과 EVP_aes_256_ecb 심볼이 프로토타입만 선언되어있고 실제 함수가 없어서 나는에러 같은데요..(추정)
이를 해결하기 위해선 실제 함수가 선언되어 있는 라이브러리를 gcc의 -l 옵션으로 지정해줘야 하는건가요?
어디에 있는 어떤 라이브러리를 포함 시켜야 하는걸까요?
아니면 혹시 방향이 잘못되어 있는지 질문 드립니다..
Forums:
음 ..
EVP_aes_256_ecb 라면 openssl 쓰시는거 같은데.. openssl 의 crypto library 이름은 libcrypto.so 죠.
-lcrypto 를 추가하셔야 할 것 같네요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
지금 openssl-1.0.0g
지금 openssl-1.0.0g 인데요..
라이브러리로는 libcrypto.a, libssl.a 두개의 아카이브 파일이 있습니다.
ar -x 로 풀어보니 .so가 아니라 .o파일들이네요 ...
-lcrypto는 라이브러리가 없구요 ㅜㅜ..
사실 이게 같은 시스템의 다른 프로그램에 적용되어 있는걸 뜯어와서 붙이는 중이라 제대로 동작하는 프로그램의 Makefile로부터 라이브러리도 다 카피 페이스트 했습니다..
-lnsl -lm -lsocket -lcrypt -ldl -lgen 이에요..
분명 동일한 아카이브 파일을 가져와서 동일하게 컴파일 했는데 안되니 미치겠습니다 ㅜㅜ
음 ..
일단 EVP_aes_256_ecb 는 openssl 의 libcrypto 에 있는 evp 를 위한 함수 맞을거구요.
자기 소스에서 libcrypto 를 사용하지 않더라도, 다른 library 에서 참조하는 바람에 dependency 가 걸려 있을 수도 있습니다.
ldd 로 찍어 보면 누가 필요로 하는지 나올겁니다.
어쨌든 openssl library 를 shared 로 빌드하고 그 경로에 맞게 -L 넣어주고 -lcrypto 를 추가하는 걸로 문제가 해결 될 것 같은데요.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
에고 해결됐습니다 감사합니다!
에고 해결됐습니다 감사합니다!
댓글 달기