libimobiledevice 설치 중 make 명령어 오류 (CRYPTO_LOCK을 찾을 수 없습니다)

misohouse의 이미지

http://stackoverflow.com/questions/37185443/i-cant-find-crypto-lock-in-openssl-crypto-h

위 주소는 먼저 스택오버플로우에 올린 질문입니다.

보시면 아시겠지만 openssl이 깔려있음에도 불구하고 openssl의 crypto.h에 있는 CRYPTE_LOCK 변수를 인식하지 못하고 계속 에러가 나는 것을 확인할 수 있었습니다.

답글에 달렸듯이 Makefile에 내용을 바꿨는데도 불구하고 오류가 나더라구요..

Makefile에는

openssl_CFLAGS = -I/usr/local/include

이라고 나와있는데, 실제로 crypto.h가 2개 저장되어있고 하나는 /usr/local/include/openssl에 다른 하나는 /usr/include/openssl에 저장되어있습니다.

저 변수가 정의되어있는 crypto.h는 /usr/include/openssl에 있어서 Makefile의 내용을 바꿨는데도 불구하고 여전히 같은 오류가 납니다.

==

여기까지가 스택오버플로우에 올린 질문과 답글을 수행한 결과고 아직도 해결을 못하고 있습니다.

제가 생각한대로 Makefile의 내용을 바꾸는게 맞는지 아니면 다른 문제가 있는 건지 궁금합니다.

답변해주시면 감사하겠습니다. ^^

ymir의 이미지

시스템에 이미 openssl-dev 가 설치되어 있는 상태에서, openssl 을 git 로 받아서 추가로 설치한 듯 한데..
가급적 openssl-dev 를 그냥 이용하시는게 낫고, 새 버전의 openssl 이 필요하면 git 보다는 download 에서 tar.gz 으로 배포된 소스를 받아서 설치하는게 낫습니다.

git 에서 설치한 openssl (/usr/local/include/openssl) 쪽은 그냥 삭제하시고, libimobiledevice 에서 새로 configure 해보시죠.

그리고 어느 Makefile 을 고쳤는지 모르겠지만, automake 로 돌아가는 애들은..
Makefile 을 직접 고치기 보다는 configure 할 때 환경변수나 옵션 등으로 넣는게 낫습니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

misohouse의 이미지

apt-get install openssl로 설치했었는데 그러면 apt-get remove openssl로 삭제하고 다시 진행해보면 될까요?

그리고 고친 Makefile은 libimobiledevice 폴더 내부에 있는 Makefile이었습니다.

automake로 돌아가는지 여부는 어떻게 판단하나요??

어떻게든 되는 것은 없다.

ymir의 이미지

작업하신 내역에 대한 설명이 없으니 계속 추정만 하게 되는데..

/usr/include/openssl 이 있다는 말로 미루어 openssl-dev 를 설치하신 것 같고..
openssl-dev 패키지가 설치되어 있다면 그냥 그걸로 된 것 같네요. 그건 건드릴 필요는 없을 것 같구요.

git 소스 트리가 있는 url 과 /usr/local/include/openssl 에 대한 것으로 볼 때, git 로 받아서 make install 까지 하신것 같은데..
일단 /usr/local/lib 과 /usr/local/include/openssl 에 각각 설치된 라이브러리와 헤더를 삭제하면, git 로 설치된 것은 날아가고..
openssl-dev 만 남을테니.. 이 상태에서 다시 configure 해보시란 말이었습니다.

configure, automake 는 떨어질 수 없는 조합이니.. 이를 제대로 이용하시려면 configure 옵션이나 환경 변수를 이용하시고..
필요하면 configure.ac 나 Makefile.am 등을 고치고 다시 configure 를 하는게 맞다는 얘기입니다.

그냥 Makefile 하나 고쳐봐야, 이 변수들이 하위 Makefile 에 상속되거나 환경 변수로 export 되게 하지 않았다면..
제대로 적용 안 될 가능성이 높습니다.
게다가 Makefile 고쳐봐야 configure 하면 다시 초기화 되니까 고치나 마나죠..

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

misohouse의 이미지

history로 확인해본 결과는 아래와 같습니다. 그냥 닥치는 대로 openssl에 관한 건 다 설치 한 것 같네요.
마지막 1751번째 명령어는 올려주신 댓글을 보고 openssl을 지워본 다음에 다시 make를 실행하기 위해 실행한 명령어 입니다.

1411 git clone git://git.openssl.org/openssl.git
1413 cd openssl
1428 openssl version
1429 apt-get remove openssl
1431 apt-cache search openssl
1432 apt-get install openssl
1434 openssl version
1435 apt-get install libcrypt-openssl-bignum-perl
1436 apt-get install libcrypt-openssl-random-perl
1751 apt-get remove openssl

이후 make 명령어를 수행했는데 지웠는데 여전히

root@localhost:~/iphone_test/libimobiledevice# make
make all-recursive
make[1]: Entering directory `/root/iphone_test/libimobiledevice'
Making all in common
make[2]: Entering directory `/root/iphone_test/libimobiledevice/common'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/root/iphone_test/libimobiledevice/common'
Making all in src
make[2]: Entering directory `/root/iphone_test/libimobiledevice/src'
CC idevice.lo
idevice.c: In function 'locking_function':
idevice.c:57:13: error: 'CRYPTO_LOCK' undeclared (first use in this function)
if (mode & CRYPTO_LOCK)
^
idevice.c:57:13: note: each undeclared identifier is reported only once for each function it appears in
idevice.c: In function 'internal_idevice_deinit':
idevice.c:105:2: warning: 'ERR_remove_thread_state' is deprecated (declared at /usr/local/include/openssl/err.h:362) [-Wdeprecated-declarations]
ERR_remove_thread_state(NULL);
^
idevice.c: In function 'idevice_connection_enable_ssl':
idevice.c:706:2: warning: implicit declaration of function 'SSLv3_method' [-Wimplicit-function-declaration]
SSL_CTX *ssl_ctx = SSL_CTX_new(SSLv3_method());
^
idevice.c:706:2: warning: passing argument 1 of 'SSL_CTX_new' makes pointer from integer without a cast [enabled by default]
In file included from idevice.c:39:0:
/usr/local/include/openssl/ssl.h:1381:17: note: expected 'const struct SSL_METHOD *' but argument is of type 'int'
__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
^
idevice.c:760:2: warning: 'ERR_remove_thread_state' is deprecated (declared at /usr/local/include/openssl/err.h:362) [-Wdeprecated-declarations]
ERR_remove_thread_state(NULL);
^
idevice.c: At top level:
idevice.c:55:13: warning: 'locking_function' defined but not used [-Wunused-function]
static void locking_function(int mode, int n, const char* file, int line)
^
idevice.c:63:22: warning: 'id_function' defined but not used [-Wunused-function]
static unsigned long id_function(void)
^
make[2]: *** [idevice.lo] Error 1
make[2]: Leaving directory `/root/iphone_test/libimobiledevice/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/iphone_test/libimobiledevice'
make: *** [all] Error 2
root@localhost:~/iphone_test/libimobiledevice#

오류가 나네요

시스템에 존재하는 crypto.h 파일들의 위치는 다음과 같습니다.

root@localhost:~# find / -name "crypto.h"
/root/iphone_test/openssl-master/include/openssl/crypto.h
/root/iphone_test/openssl/include/openssl/crypto.h
/usr/local/include/openssl/crypto.h
/usr/include/openssl/crypto.h
/usr/include/gnutls/crypto.h
/usr/src/linux-headers-4.2.0-27/include/linux/crypto.h
/usr/src/linux-headers-4.2.0-27-generic/include/config/crypto.h
/usr/src/linux-headers-4.2.0-27-generic/include/config/crypto/dev/ccp/crypto.h
/usr/src/linux-headers-4.2.0-27-generic/include/config/rt2x00/lib/crypto.h
root@localhost:~#

와 같은 위치에 crypto.h 가 존재하고 제가 원하는 crypto.h 즉, make 오류 발생 시 정의되지 않았다는 CRYPTO_LOCK 변수가 선언되어있는 crypto.h 파일은 /usr/include/openssl/crypto.h 입니다.

아래는 ./configure를 했을 때 화면입니다.

Configuration for libimobiledevice 1.2.1:
-------------------------------------------

Install prefix: .........: /usr/local
Debug code ..............: no
Python bindings .........: no
SSL support backend .....: OpenSSL

Now type 'make' to build libimobiledevice 1.2.1,
and then 'make install' for installation.

root@localhost:~/iphone_test/libimobiledevice#

근데 원래 설치법에는 ./autogen.sh 실행이후 make를 하라고 해서 ./autogen.sh 결과 화면도 보여드리겠습니다.

Configuration for libimobiledevice 1.2.1:
-------------------------------------------

Install prefix: .........: /usr/local
Debug code ..............: no
Python bindings .........: no
SSL support backend .....: OpenSSL

Now type 'make' to build libimobiledevice 1.2.1,
and then 'make install' for installation.

root@localhost:~/iphone_test/libimobiledevice#

(근데 이렇게 보니까 똑같네요..ㅎㅎ;;)

이게 제가 한 작업의 전부입니다. 뭐가 문제일까요

어떻게든 되는 것은 없다.

ymir의 이미지

openssl-dev 가 아니라 libssl-dev 인데 잘못 썼네요. 미안합니다. 얘는 왜 이리 매번 헷갈리는지.. ;;

다른 라이브러리와는 달리 openssl 버전에 dependency 가 없으니..
git 에서 받아서 수동으로 설치한 것은 필요 없으니 지우면 된다는 뜻입니다.

일단 openssl, libssl-dev 이 패키지가 설치된 상태에서, 다시 ./configure, make 해보세요.
거기서부터가 시작이고.. 그 상태에서 안된다면 이제 하나씩 따져봐야 할겁니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

misohouse의 이미지

openssl은 apt-get으로 다시 설치했고, libssl-dev는 이미 최신버전이 존재하고 있었습니다.

configure 후 make 명령을 실행하니 여전히 같은 오류가 발생합니다.

해당 폴더에 있는 파일들은 아래와 같습니다.

root@localhost:~/iphone_test/libimobiledevice# ls
AUTHORS README config.h cython libtool
COPYING aclocal.m4 config.h.in depcomp ltmain.sh
COPYING.LESSER autogen.sh config.log docs m4
Makefile autom4te.cache config.status doxygen.cfg missing
Makefile.am common config.sub doxygen.cfg.in src
Makefile.in compile configure include stamp-h1
NEWS config.guess configure.ac install-sh tools
root@localhost:~/iphone_test/libimobiledevice#

어떤 파일을 열어서 점검해봐야할까요?

어떻게든 되는 것은 없다.

ymir의 이미지

config.log 에서 openssl 체크하는 부분 로그는 어떻게 나왔는지..?
환경변수 PKG_CONFIG_PATH 가 /usr/local 쪽으로 설정되어 있는지..?
/usr/local/openssl 쪽은 삭제하셨는지..?
make clean 또는 패키지를 새로 압축을 푼 후에 ./configure 해보셨는지..?

http://www.libimobiledevice.org/

위 링크에 있는 libimobiledevice-1.2.0.tar.bz2, libplist-1.12.tar.bz2, libusbmuxd-1.0.10.tar.bz2 와..
ubuntu 에 있는 libssl-dev 를 이용해서 다음 순서대로 빌드해 봤음..

$ cd libplist-1.12
$ ./configure --without-cython --prefix=/home/ymir/local
$ make && make install
 
$ cd ../libusbmuxd-1.0.10
$ PKG_CONFIG_PATH=/home/ymir/local/lib/pkgconfig ./configure --prefix=/home/ymir/local
$ make && make installl
 
$ cd ../libimobiledevice-1.2.0
$ PKG_CONFIG_PATH=/home/ymir/local/lib/pkgconfig ./configure --prefix=/home/ymir/local --without-cython
$ make && make install
$ ldd ~/local/lib/libimobiledevice.so.6.0.0
        linux-gate.so.1 =>  (0xb772d000)
        libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb7697000)
        libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb74ea000)
        libusbmuxd.so.4 => /home/ymir/local/lib/libusbmuxd.so.4 (0xb74e0000)
        libplist.so.3 => /home/ymir/local/lib/libplist.so.3 (0xb74d4000)
        libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb74b8000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb730a000)
        libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7305000)
        libxml2.so.2 => /usr/lib/i386-linux-gnu/libxml2.so.2 (0xb71aa000)
        /lib/ld-linux.so.2 (0x8002a000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb7190000)
        liblzma.so.5 => /lib/i386-linux-gnu/liblzma.so.5 (0xb716a000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7124000)

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

misohouse의 이미지

이제 같은 곳에서는 에러가 안나는데 새로운 곳에서 아래 같은 에러가 뜨네요..

아 진짜 make 돌릴 때 한 번에 되는걸 본적이 없네요 ㅠㅠ

Making all in tools
make[2]: Entering directory `/root/iphone_test/libimobiledevice-1.2.0/tools'
CC idevice_id-idevice_id.o
CCLD idevice_id
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_set_locking_callback'
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_num_locks'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_library_init'
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_set_id_callback'
../src/.libs/libimobiledevice.so: undefined reference to `CRYPTO_cleanup_all_ex_data'
../src/.libs/libimobiledevice.so: undefined reference to `EVP_cleanup'
../src/.libs/libimobiledevice.so: undefined reference to `SSLv3_method'
collect2: error: ld returned 1 exit status
make[2]: *** [idevice_id] Error 1
make[2]: Leaving directory `/root/iphone_test/libimobiledevice-1.2.0/tools'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/iphone_test/libimobiledevice-1.2.0'
make: *** [all] Error 2
root@localhost:~/iphone_test/libimobiledevice-1.2.0#

어떻게든 되는 것은 없다.

misohouse의 이미지

실행한 명령들은 아래와 같습니다.

1867 cd libplist-1.12/
1868 clear
1869 ./configure --without-cython --prefix=/usr/local
1870 make && make install
1871 clear
1872 cd ..
1873 cd libusbmuxd-1.0.10/
1874 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/home/ymir/local
1875 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local
1876 make && make install
1877 cd ..
1878 ls
1879 cd libimobiledevice-1.2.0/
1880 clear
1881 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython
1882 make && make install

어떻게든 되는 것은 없다.

ymir의 이미지

링커가 openssl (libcrypto.so, libssl.so) 라이브러리를 찾지 못했기 때문에 발생한 에러일겁니다.
openssl 라이브러리가 설치되지 않았거나, 엉뚱한 경로에서 라이브러리를 찾고 있거나.. 뭔가 문제가 있겠죠.

위에 댓글 앞부분에 있는 질문 내용 다 체크해 보셨나요?
예전에 작업하던 소스에서 계속 뭔가 하고 있는거라면 config cache 에 남아 있던 내용이라던가, 이전에 빌드했던 찌꺼기들이 남아서..
예전 configure 결과를 참조할 수도 있습니다. make clean 하고 빌드 해보시고, 아니면 소스 새로 압축 풀어서 다시 해보세요.
그 전에 위의 openssl 라이브러리들 제대로 설치 되어 있는지 확인해 보시구요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

익명 사용자의 이미지

1. config.log 에서 openssl 체크하는 부분 로그는 어떻게 나왔는지..?
2. 환경변수 PKG_CONFIG_PATH 가 /usr/local 쪽으로 설정되어 있는지..?

1.
config.log 에서 openssl 관련해서 확인한 부분의 내용은 아래와 같습니다.
pkg_cv_openssl_CFLAGS='-I/usr/local/include '
openssl_CFLAGS='-I/usr/local/include '

2.
환경변수 값을 보는 명령어가 echo $변수명으로 알고 있는데 변수명 부분에 PKG_CONFIG_PATH 입력해도 아무 값도 안나와서 잘못 알고 있는 것 같습니다..

3.
openssl, libcrypto, libssl 모두 다 설치되어있었고 /usr/local/ 위치에 openssl이 없는 상황에서 진행하였습니다.

4.
ymir 님께서 말씀해주신 사이트에 있는 패키지들을 다운받아서 설치했고 그 전에 기존에 작업했던 폴더들은 전부 make clean 후 삭제하였습니다.

5.
아마 openssl을 엉뚱한 경로에서 찾고 있는 것 같은데.. 이럴 경우 어떻게 수정을 해줘야할까요?
설치에 필요한 패키지들은 다 있는 것 같은데 설치가 안되는 걸로 봐서는 이렇게 밖에 해석이 되지 않습니다.

도와주셔서 감사합니다.

ymir의 이미지

PKG_CONFIG_PATH 를 /usr/local/lib/pkgconfig 으로 주었으니, pkg-config 이 거기에서 라이브러리를 우선 찾았을 거고..
그래서 openssl_CFLAGS 에 /usr/local/include 가 들어간게 아닐까 싶네요.
/usr/local/lib/pkgconfig 에 openssl.pc 파일이 있는지 확인해 보시고, 있으면 얘도 지우셔야 할겁니다.
다시 configure 하고, grep -i openssl config.log 로 확인해 보세요. 달라진게 있는지..

근데 /usr/local/lib 에 libssl.so 와 libcrypto.so 가 없다면, /usr/lib 에서 찾을 것 같은데.. 좀 이상하네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

익명 사용자의 이미지

말씀해주신 위치에 있는 openssl.pc 파일을 찾아서 지운 후에

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython
명령을 통해 ./configure를 진행하였고
변경된 사항을 확인해보니 openssl_CFLAGS의 값이 없어진 것을 확인할 수 있었습니다.

root@localhost:~/iphone_test/libimobiledevice-1.2.0# grep -i openssl config.log
configure:17273: checking for openssl
configure:17280: $PKG_CONFIG --exists --print-errors "$pkg_req_openssl"
configure:17297: $PKG_CONFIG --exists --print-errors "$pkg_req_openssl"
ac_cv_env_openssl_CFLAGS_set=
ac_cv_env_openssl_CFLAGS_value=
ac_cv_env_openssl_LIBS_set=
ac_cv_env_openssl_LIBS_value=
pkg_cv_openssl_CFLAGS=' '
pkg_cv_openssl_LIBS='-lssl -lcrypto '
openssl_CFLAGS=' '
openssl_LIBS='-lssl -lcrypto '
ssl_requires='openssl >= 0.9.8'
#define HAVE_OPENSSL 1
root@localhost:~/iphone_test/libimobiledevice-1.2.0#

그러나 여전히 make는 같은 오류가 납니다..ㅠㅠ (make clean 후 해도 마찬가지 입니다)

말씀하신 파일들의 위치는 아래와 같습니다.

root@localhost:~/iphone_test/libimobiledevice-1.2.0# find / -name libssl.so
/usr/local/lib/libssl.so
/usr/lib/x86_64-linux-gnu/libssl.so
root@localhost:~/iphone_test/libimobiledevice-1.2.0# find / -name libcrypto.so
/usr/local/lib/libcrypto.so
/usr/lib/x86_64-linux-gnu/libcrypto.so
root@localhost:~/iphone_test/libimobiledevice-1.2.0#

ymir의 이미지

애초에 libssl-dev 만 설치했거나, openssl 의 git 대신 Downloads 에 있는 tar.gz 를 설치했더라면 아마도 이런 상황은 없었을 것 같은데.. 조금 안타깝네요.
어쨌거나 이 둘 중의 하나가 제대로 설치된 상태로 돌아가야 할 겁니다.

위에서 먼저 git 로 설치한 건 다 지우시라고 했는데.. 라이브러리는 안 지우신것 같네요. (/usr/local/lib 에 있는..)
ld 의 라이브러리 검색 경로가 /usr/lib 보다 /usr/local/lib 이 우선이라, 계속 /usr/local/lib 을 참조하고 있는 것일 수도 있습니다.

일단, git 로 설치했던 흔적들을 모두 제거하고 libssl-dev 패키지의 파일들이 모두 정상적인 상태인지 확인해 보시죠.
/usr/local 에 있는 openssl 과 관련된 모든 라이브러리, 헤더, openssl 실행파일, .pc 파일 등을 모두 제거한 후에..
dpkg -V libssl-dev 로 설치된 패키지들이 모두 정상인지 확인, 만약 아니라면 sudo apt-get install --reinstall libssl-dev 로 재설치..
해서 libssl-dev 만 설치된 상태인지 확인해 보고.. 소스를 다시 풀어서 시도해 보시죠.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

misohouse의 이미지

apt-get remove openssl
apt-get remove libssl-dev
명령어 실행하고

/usr/local/lib에서 rm libssl* 명령어 실행한 후에

apt-get install --reinstall libssl-dev 명령어로 재설치 한 후에

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython

명령어로 configure하고

make한 결과 아래와 같은 오류가 나타납니다.

/usr/bin/ld: warning: libssl.so.1.1, needed by ../src/.libs/libimobiledevice.so, not found (try using -rpath or -rpath-link)
../src/.libs/libimobiledevice.so: undefined reference to `SSL_write@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_set_connect_state@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_free@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_set_bio@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_shutdown@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_set_verify@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_read@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_new@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_use_RSAPrivateKey@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_do_handshake@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_CTX_use_certificate@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_free@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_COMP_get_compression_methods@OPENSSL_1_1_0'
../src/.libs/libimobiledevice.so: undefined reference to `SSL_new@OPENSSL_1_1_0'

얼핏 보니 openssl이 없다는 거 같은데, 말씀해주신 Downloads에 있는 tar.gz를 설치했어야 한다는게 무슨 말씀인지 모르겠습니다.

그리고 git으로 설치했다는게 apt-get 으로 설치했다는걸 의미하는건지도 궁금합니다.

뭔가 openssl만 제대로 깔면 해결될듯한데.. 어떻게 할까요?

어떻게든 되는 것은 없다.

ymir의 이미지

_orz..

libssl-dev 패키지나 https://www.openssl.org/source/openssl-1.0.2h.tar.gz 둘 중에 하나를 설치해야 하는데..
www.openssl.org/source/gitrepo.html 에 있는 소스를 받아서 설치하는 바람에 문제가 생긴 겁니다.
git 로 받은 소스를 빌드하면 /usr/local 에 설치되는데.. 이걸 제대로 삭제하지 않아서 문제가 아직도 해결되지 않고 있는 상태...

openssl-1.0.2h.tar.gz 을 소스 빌드해서 설치하면, git 로 받은 소스를 빌드했을 때와 마찬가지로 /usr/local 에 설치되는데..
그냥 얘 설치해서 했어도 마찬가지로 정상적으로 빌드되었을 겁니다.

지금 계속 말씀드리고 있는 것은.. 그냥 패키지 관리툴로 libssl-dev 를 제대로 설치하고..
이전에 git 로 받아 빌드해서 설치했던 것들을 제대로 지우시라는 겁니다.

- 설치해야 하는 것 : libssl-dev, openssl 패키지
- 지워야 하는 것 : /usr/local/lib/{libssl|libcrypto}.*, /usr/loca/lib/pkgconfig/{openssl|libssl|libcrypto}.pc

그래도 안되면 그냥 apt-get 으로 libimobiledevice-dev 를 설치해서 쓰시는게 나을것 같네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

misohouse의 이미지

아.. 제가 지워야하는 것을 제대로 못지웠네요 ㅠㅠ

저거 다 지우고 설치야할것 설치하고 하니까 제대로 됬습니다.

마지막으로.. PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr/local --without-cython 여기서

KG_CONFIG_PATH=/usr/local/lib/pkgconfig
--prefix=/usr/local
--without-cython

이거만 설명해주실 수 있나요..?

도와주셔서 정말 감사합니다.

이제 idevicerestore를 설치해보려구요.. 여전히 여기서도 오류가 나지만 좀 더 고민해보겠습니다..ㅎㅎ;;

정말 정말 감사합니다!

어떻게든 되는 것은 없다.

ymir의 이미지

https://help.ubuntu.com/community/EnvironmentVariables#Bash.27s_quick_assignment_and_inheritance_trick

man pkg-config

./configure --help 하신 후에 내용을 꼼꼼히 읽어 보세요.

--without-cython 은 제 시스템에 불필요한 cython 패키지를 설치하고 싶지 않아서 건너뛴겁니다.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

chanik의 이미지

소스트리로부터 수작업으로 make install된 파일들을 지울 때,
아마도 제대로 된 근본적인 해결방법들이 있을 것 같기는 합니다만,
그냥 이도 저도 귀찮고 일단 저질러진 찜찜함을 얼른 청소하고 싶다 할 때 쓰던 방법이 있습니다.

소스트리로부터 make install 된 파일들은 일정범위 안에서 (즉, make install 실행되는 시간)
타임스탬프가 형성되므로 find 명령으로 타임스탬프 범위를 적당히 주면
특정 패키지에 의해 설치된 파일들을 파악할 수 있습니다.

예를 들어, 서너시간 전에 --prefix=/usr/local 로 설치된 패키지를 구분하려면

$ cd /usr/local
$ find -mmin -3000 -a -mmin +1000

정도로 주면 변경시각이 3000분 ~ 1000분 사이인 파일들을 찾아줄테니
나오는 목록을 훑어보고 맞다 싶으면 아래와 같이 지워주면 됩니다.

$ find -mmin -3000 -a -mmin +1000 -exec rm {} \;

시간은 상황에 따라 적당히 지정하면 됩니다.
경우에 따라서는 -mmin 대신 -mtime 옵션으로 날짜 단위로만 지정해도 충분할 수 있습니다.

만약 다른 패키지들과 타임스탬프 범위가 겹치거나 간격이 너무 촘촘해서 시간지정이 어렵다 싶을때는
지우고 싶은 패키지 소스트리에서 make install 을 다시 해서 변경시각을 갱신해주고

$ find -mmin -10

정도 해 주면 최근 10분 안에 변경된 파일들만 나올테니 구분이 가능하겠죠.

근사한 방법은 아니지만 가끔 귀찮은 상황에서 빠져나오는데는 도움이 되었습니다.

ymir의 이미지

사실 find 로 하는게 간편하긴 하죠.
다만 그 정도로 /usr/local 을 지저분(?)하게 쓰는 타입은 아니라서, 미처 생각을 못했네요.

쓰다보면 가끔 make uninstall 을 제공해주는 고마운 애들이 있더라구요.
없어도 뭐 Makefile 에서 install 을 찾아서 그 부분을 uninstall 할 수 있게끔 바꿔서 추가해 주면 되고..
아니면 /usr/local 이 아닌 별도의 디렉토리에 설치해서 PATH 추가해서 쓰다가 디렉토리 통채로 날리는 정도..

일반적인 개발 환경은 대개 소스 빌드 하지 않고.. 가급적 패키지 설치로 끝내는데..
크로스 빌드 환경이라면, 어차피 그냥 로컬 디렉토리에 다 모아놓고 쓸 수 밖에 없으니..

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

chanik의 이미지

제가 misohouse님께 남기는 댓글을 ymir님 글에 붙여놨네요.
ymir님 댓글들 보며 여러가지 많이 배우고 있습니다.
오해의 소지가 있을 수 있는데 가벼이 넘겨주셔서 고맙습니다.

misohouse의 이미지

두 분다 감사합니다!

더 열심히 공부하겠습니다 ^^

어떻게든 되는 것은 없다.

댓글 달기

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