-
-
Notifications
You must be signed in to change notification settings - Fork 7k
Description
I did this
- compiled OpenSSL 1.0.2k:
./config -fPIC - configured curl 7.53.1:
./configure --with-ssl=/usr/local/sslsee config.log
make abended:
make V=1
Making all in lib
make[1]: Entering directory `/data/tessus/work/curl-7.53.1/lib'
make all-am
make[2]: Entering directory `/data/tessus/work/curl-7.53.1/lib'
make[2]: Leaving directory `/data/tessus/work/curl-7.53.1/lib'
make[1]: Leaving directory `/data/tessus/work/curl-7.53.1/lib'
Making all in src
make[1]: Entering directory `/data/tessus/work/curl-7.53.1/src'
make all-am
make[2]: Entering directory `/data/tessus/work/curl-7.53.1/src'
/bin/sh ../libtool --tag=CC --mode=link gcc -O2 -Wno-system-headers -L/usr/lib64 -L/usr/local/ssl/lib -o curl curl-slist_wc.o curl-tool_binmode.o curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o curl-tool_parsecfg.o curl-tool_strdup.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o ../lib/curl-nonblock.o ../lib/curl-warnless.o ../lib/libcurl.la -lssl -lcrypto -lz
libtool: link: gcc -O2 -Wno-system-headers -o .libs/curl curl-slist_wc.o curl-tool_binmode.o curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o curl-tool_parsecfg.o curl-tool_strdup.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o ../lib/curl-nonblock.o ../lib/curl-warnless.o -L/usr/lib64 -L/usr/local/ssl/lib ../lib/.libs/libcurl.so -lssl -lcrypto -lz
../lib/.libs/libcurl.so: undefined reference to `SSL_get0_alpn_selected'
../lib/.libs/libcurl.so: undefined reference to `SSL_COMP_free_compression_methods'
../lib/.libs/libcurl.so: undefined reference to `SSL_CTX_set_alpn_protos'
collect2: error: ld returned 1 exit status
make[2]: *** [curl] Error 1
make[2]: Leaving directory `/data/tessus/work/curl-7.53.1/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/data/tessus/work/curl-7.53.1/src'
make: *** [all-recursive] Error 1
I changed the order of the library paths and added -ldl:
/bin/sh ../libtool --tag=CC --mode=link gcc -O2 -Wno-system-headers -L/usr/local/ssl/lib -L/usr/lib64 -o curl curl-slist_wc.o curl-tool_binmode.o curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o curl-tool_parsecfg.o curl-tool_strdup.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o ../lib/curl-nonblock.o ../lib/curl-warnless.o ../lib/libcurl.la -lssl -lcrypto -lz -ldl
libtool: link: gcc -O2 -Wno-system-headers -o .libs/curl curl-slist_wc.o curl-tool_binmode.o curl-tool_bname.o curl-tool_cb_dbg.o curl-tool_cb_hdr.o curl-tool_cb_prg.o curl-tool_cb_rea.o curl-tool_cb_see.o curl-tool_cb_wrt.o curl-tool_cfgable.o curl-tool_convert.o curl-tool_dirhie.o curl-tool_doswin.o curl-tool_easysrc.o curl-tool_formparse.o curl-tool_getparam.o curl-tool_getpass.o curl-tool_help.o curl-tool_helpers.o curl-tool_homedir.o curl-tool_hugehelp.o curl-tool_libinfo.o curl-tool_main.o curl-tool_metalink.o curl-tool_mfiles.o curl-tool_msgs.o curl-tool_operate.o curl-tool_operhlp.o curl-tool_panykey.o curl-tool_paramhlp.o curl-tool_parsecfg.o curl-tool_strdup.o curl-tool_setopt.o curl-tool_sleep.o curl-tool_urlglob.o curl-tool_util.o curl-tool_vms.o curl-tool_writeenv.o curl-tool_writeout.o curl-tool_xattr.o ../lib/curl-strtoofft.o ../lib/curl-nonblock.o ../lib/curl-warnless.o -L/usr/local/ssl/lib -L/usr/lib64 ../lib/.libs/libcurl.so -lssl -lcrypto -lz -ldl
This worked.
However, as you can see the curl output still reports the wrong openssl version:
./curl -V
curl 7.53.1 (x86_64-pc-linux-gnu) libcurl/7.53.1 OpenSSL/1.0.1e zlib/1.2.8 libssh2/1.5.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets HTTPS-proxy
The curl binary is static, so I have no idea which libraries were really linked.
Checking the shared library:
ldd libcurl.so
linux-vdso.so.1 => (0x00007fff07964000)
libssh2.so.1 => /lib64/libssh2.so.1 (0x00007ff45adc8000)
libssl.so.10 => /lib64/libssl.so.10 (0x00007ff45ab5a000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007ff45a772000)
liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007ff45a563000)
libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007ff45a310000)
libz.so.1 => /lib64/libz.so.1 (0x00007ff45a0fa000)
libc.so.6 => /lib64/libc.so.6 (0x00007ff459d3c000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007ff459af1000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007ff459811000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007ff45960d000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007ff4593d7000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007ff4591d3000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007ff458fb9000)
libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007ff458d9b000)
libssl3.so => /lib64/libssl3.so (0x00007ff458b5c000)
libsmime3.so => /lib64/libsmime3.so (0x00007ff458935000)
libnss3.so => /lib64/libnss3.so (0x00007ff45860d000)
libnssutil3.so => /lib64/libnssutil3.so (0x00007ff4583e1000)
libplds4.so => /lib64/libplds4.so (0x00007ff4581dd000)
libplc4.so => /lib64/libplc4.so (0x00007ff457fd7000)
libnspr4.so => /lib64/libnspr4.so (0x00007ff457d99000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff457b7c000)
/lib64/ld-linux-x86-64.so.2 (0x00000036d1e00000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007ff45796d000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007ff457769000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007ff457531000)
librt.so.1 => /lib64/librt.so.1 (0x00007ff457329000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007ff457104000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007ff456e87000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007ff456c21000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007ff4569fb000)
As you can see, the shared library references my system's openssl libraries and not the ones which I specified in the configure option.
configure found my openssl libraries, but I can also see another issue here:
configure:22167: PKG_CONFIG_LIBDIR will be set to "/usr/local/ssl/lib/pkgconfig"
configure:22235: checking for pkg-config
configure:22266: result: /usr/bin/pkg-config
configure:22291: checking for openssl options with pkg-config
configure:22305: result: found
configure:22334: pkg-config: SSL_LIBS: "-lssl -lcrypto "
configure:22336: pkg-config: SSL_LDFLAGS: "-L/usr/local/ssl/lib "
configure:22338: pkg-config: SSL_CPPFLAGS: "-I/usr/local/ssl/include "
configure:22350: checking for HMAC_Update in -lcrypto
configure:22372: gcc -o conftest -O2 -Wno-system-headers -I/usr/local/ssl/include -L/usr/lib64 -L/usr/local/ssl/lib conftest.c -lcrypto -lssl -lcrypto -llber -lldap -lz >&5
configure:22372: $? = 0
configure:22381: result: yes
configure:22443: checking OpenSSL linking without -ldl
configure:22460: gcc -o conftest -O2 -Wno-system-headers -I/usr/local/ssl/include -L/usr/lib64 -L/usr/local/ssl/lib conftest.c -lcrypto -lssl -lcrypto -llber -lldap -lz >&5
configure:22460: $? = 0
configure:22462: result: yes
configure:22514: checking for SSL_connect in -lssl
configure:22536: gcc -o conftest -O2 -Wno-system-headers -I/usr/local/ssl/include -L/usr/lib64 -L/usr/local/ssl/lib conftest.c -lssl -lcrypto -lssl -lcrypto -llber -lldap -lz >&5
configure:22536: $? = 0
configure:22545: result: yes
checking OpenSSL linking without -ldl -> result: yes
This can't be true, because I only have static openssl libraries in /usr/local/ssl/lib.
I also tried to create and use shared openssl libraries, but this changed nothing in regards to curl. The same error occurs and still only the system's openssl libs are referenced.
I expected the following
- a working curl version linked to my openssl
- a shared curl library that uses my openssl libs
- dynamic openssl: libcurl.so should reference my openssl libs
- static openssl: libcurl.so should include my static openssl and not reference any openssl libs at all
curl/libcurl version
curl-7.53.1 - https://curl.haxx.se/download/curl-7.53.1.tar.gz
operating system
Linux 3.16.3-200.fc20.x86_64 #1 SMP Wed Sep 17 22:34:21 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux