aes 암호화 라이브러리 컴파일도중 EVP_aes_256_ecb 심볼 ld: 치명적 기호 참조 오류에 관해서...

morolty의 이미지

./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 옵션으로 지정해줘야 하는건가요?

어디에 있는 어떤 라이브러리를 포함 시켜야 하는걸까요?

아니면 혹시 방향이 잘못되어 있는지 질문 드립니다..

ymir의 이미지

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 』

morolty의 이미지

지금 openssl-1.0.0g 인데요..
라이브러리로는 libcrypto.a, libssl.a 두개의 아카이브 파일이 있습니다.
ar -x 로 풀어보니 .so가 아니라 .o파일들이네요 ...
-lcrypto는 라이브러리가 없구요 ㅜㅜ..
사실 이게 같은 시스템의 다른 프로그램에 적용되어 있는걸 뜯어와서 붙이는 중이라 제대로 동작하는 프로그램의 Makefile로부터 라이브러리도 다 카피 페이스트 했습니다..

-lnsl -lm -lsocket -lcrypt -ldl -lgen 이에요..
분명 동일한 아카이브 파일을 가져와서 동일하게 컴파일 했는데 안되니 미치겠습니다 ㅜㅜ

ymir의 이미지

일단 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 』

morolty의 이미지

에고 해결됐습니다 감사합니다!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.