OpenSSL 크로스 컴파일시에...

icicle6의 이미지

OpenSSL 을 arm 용으로 크로스 컴파일을 하려고 하는데,
에러가 발생을하네요.

./Configure linux-elf-arm

으로 실행 시켰어요..

--------------------------------------------------------------------------

if [ "linux-shared" = "hpux-shared" -o "linux-shared" = "darwin-shared" ] ; then \
gcc -o openssl -DMONOLITH -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall openssl.o verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o ca.o pkcs7.o crl2p7.o crl.o rsa.o rsautl.o dsa.o dsaparam.o x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o s_time.o apps.o s_cb.o s_socket.o app_rand.o version.o sess_id.o ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o engine.o ocsp.o ../libssl.a ../libcrypto.a ; \
else \
LD_LIBRARY_PATH=..$LD_LIBRARY_PATH \
gcc -o openssl -DMONOLITH -I.. -I../include -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_KRB5 -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall openssl.o verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o ca.o pkcs7.o crl2p7.o crl.o rsa.o rsautl.o dsa.o dsaparam.o x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o s_time.o apps.o s_cb.o s_socket.o app_rand.o version.o sess_id.o ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o engine.o ocsp.o -L.. -lssl -L.. -lcrypto ; \
fi
../libcrypto.a(dso_dlfcn.o) In function `dlfcn_load'
dso_dlfcn.o(.text+0x26) undefined reference to `dlopen'
dso_dlfcn.o(.text+0x86) undefined reference to `dlclose'
dso_dlfcn.o(.text+0xad) undefined reference to `dlerror'
../libcrypto.a(dso_dlfcn.o) In function `dlfcn_bind_var'
dso_dlfcn.o(.text+0x137) undefined reference to `dlsym'
dso_dlfcn.o(.text+0x162) undefined reference to `dlerror'
../libcrypto.a(dso_dlfcn.o) In function `dlfcn_bind_func'
dso_dlfcn.o(.text+0x227) undefined reference to `dlsym'
dso_dlfcn.o(.text+0x252) undefined reference to `dlerror'
../libcrypto.a(dso_dlfcn.o) In function `dlfcn_unload'
dso_dlfcn.o(.text+0x3eb) undefined reference to `dlclose'
collect2 ld returned 1 exit status
make[1] *** [openssl] 오류 1
make[1] 나감 `/root/swim/openssl-0.9.7c/apps' 디렉토리
make *** [sub_all] 오류 1

----------------------------------------------------------------

위와 같은 에러가 나오네요.

그냥 gcc로 linux-pentuim으로 컴파일할때는 오류 없이 잘 되는데..

arm용으로 컴파일 하면 컴파일러에 상관없이 동일한 에러가 나오네요..

버전은 0.9.7c입니다...

libcryto.a는 /usr/lib안에 있는데... 오류가 발생하네요..

답변 부탁드립니다.~~ oops

김충길의 이미지

no-shared 옵션을 줘보세요. 아무래도 shared 라이브러를 링크하는거 같네요.

screen + vim + ctags 좋아요~

icicle6의 이미지

감사 합니다~

-ldl옵션으로 해결했습니다. ^^

그런데, arm 용 컴파일러로 연결을 하니까..

이번엔 이런 에러가 발생하네요..ㅡ.ㅡ;;;

/usr/local/Tynux/bin/arm-linux-gcc -o msn test.o msn.o msn_md5c.o msn_net.o msn_str_util.o msn_connect.o msn_send_msg.o msn_recv_msg.o msn_list.o msn_sb.o protocols_commands.o -L/usr/local/SSL/lib -I/usr/local/SSL/include
test.o In function `main'
test.o(.text+0x18c) undefined reference to `SSL_library_init'
test.o(.text+0x190) undefined reference to `SSLv23_method'
test.o(.text+0x19c) undefined reference to `SSL_CTX_new'
test.o(.text+0x1ac) undefined reference to `SSL_new'
test.o(.text+0x1d8) undefined reference to `SSL_set_fd'
test.o(.text+0x1e0) undefined reference to `SSL_connect'
test.o(.text+0x21c) undefined reference to `SSL_write'
test.o(.text+0x264) undefined reference to `SSL_read'
collect2 ld returned 1 exit status
make[1] *** [msn] 오류 1
make[1] 나감 `/root/swim/protocols/msnModule' 디렉토리
make *** [new] 오류 2

-lssl옵션을 붙이면 알수 없는 옵션이라는 메시지가 발생합니다.
(물론, 컴파일러를 gcc로 봐꾸면 에러없이 동작합니다.)

-L/usr/local/SSL/lib 로 연결 시켜 주어도 에러가 발생합니다.

라이브러리는 /usr/local/SSL/lib에 설치되어 있네요..

에궁... 라이브러리 설치하나두 쉽지 않네요...

☆ OverTheRainbow ☆

icicle6의 이미지

*^^*

혼자 이것 저것 검색하고 알아보던 중 찾았습니다..^^

먼저 처음에 에러 난 것은 -ldl 옵션을 추가함으로써 해결하였고,

그 후 ssl라이브러리가 연결 되지 않는 것을

arm-linux-gcc -print-search-dirs

를 통해서 라이브러리를 링크하는 곳을 확인 하였구요,

-I/usr/local/SSL/include를 컴파일시에 추가했습니다.

라이브러리 링크를 하기위해 찾는 디렉토리에

openssl라이브러리인 libssl.a 와 libcrypto.a 를 추가하였습니다.

그리고 나서 Makefile 에서

라이브러리에 -lssl -lcrypto 를 추가하여 해결했습니다.

*^^*

도움을 주신 분께 감사드립니다..^_^

그럼 이만...

☆ OverTheRainbow ☆

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.