Buy commercial curl support from WolfSSL. We help you work
out your issues, debug your libcurl applications, use the API, port to new
platforms, add new features and more. With a team lead by the curl founder
himself.
Re: Compiling curl 8.0.1 with OpenSSL 3.1.0 - ../lib/.libs/libcurl.so: undefined reference to ...
- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]
From: Jeffrey Walton via curl-library <curl-library_at_lists.haxx.se>
Date: Sun, 16 Apr 2023 13:40:58 -0400
On Sun, Apr 16, 2023 at 1:36 PM Jeffrey Walton <noloader_at_gmail.com> wrote:
>
> On Sun, Apr 16, 2023 at 1:07 PM Rahul Sabnis via curl-library
> <curl-library_at_lists.haxx.se> wrote:
> >
> > Hello,
> >
> > I get below errors when I try to compile Curl 8.0.1 with OpenSSL 3.1.0 (Same error with OpenSSL 3.0.8 & 3.0.7)
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_id'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_get_next'
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_get0_DH'
> > ../lib/.libs/libcurl.so: undefined reference to `MD4_Update'
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_get0_RSA'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_get_first'
> > ../lib/.libs/libcurl.so: undefined reference to `SSL_get_peer_certificate'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_load_private_key'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_finish'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_get_id'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_ctrl_cmd'
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_get0_DSA'
> > ../lib/.libs/libcurl.so: undefined reference to `DSA_get0_key'
> > ../lib/.libs/libcurl.so: undefined reference to `RSA_get0_key'
> > ../lib/.libs/libcurl.so: undefined reference to `DH_get0_key'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_set_default'
> > ../lib/.libs/libcurl.so: undefined reference to `DSA_get0_pqg'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_free'
> > ../lib/.libs/libcurl.so: undefined reference to `MD4_Final'
> > ../lib/.libs/libcurl.so: undefined reference to `DH_get0_pqg'
> > ../lib/.libs/libcurl.so: undefined reference to `MD4_Init'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_ctrl'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_by_id'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_init'
> > collect2: error: ld returned 1 exit status
> > make[2]: *** [curl] Error 1
> >
> > Configure command used:
> > ./configure --prefix=/home/builder/curl --enable-http --with-openssl --enable-cookies --enable-shared=yes --enable-static=no --without-zlib --disable-ldap --disable-ldaps --disable-unix-sockets --disable-rtsp --disable-threaded-resolver --disable-ntlm
> >
> > Configure command output below. Added few other parameters as can be seen below:
> > Host setup: x86_64-pc-linux-gnu
> > Install prefix: /home/builder/curl
> > Compiler: gcc -std=gnu11
> > CFLAGS: -fPIC -Werror-implicit-function-declaration -O2 -Wno-system-headers
> > CPPFLAGS: -Dlinux26 -isystem /home/builder/openssl/include/openssl -DOPENSSL_NO_DEPRECATED_3_0
> > LDFLAGS: -Wl,-R/home/builder/openssl/lib64 -L/home/builder/openssl/lib64
> > LIBS: -lssl -lcrypto -ldl
> >
> > curl version: 8.0.1
> > SSL: enabled (OpenSSL)
> > SSH: no (--with-{libssh,libssh2})
> > zlib: no (--with-zlib)
> > brotli: no (--with-brotli)
> > zstd: no (--with-zstd)
> > GSS-API: no (--with-gssapi)
> > GSASL: no (libgsasl not found)
> > TLS-SRP: no (--enable-tls-srp)
> > resolver: default (--enable-ares / --enable-threaded-resolver)
> > IPv6: enabled
> > Unix sockets: no (--enable-unix-sockets)
> > IDN: no (--with-{libidn2,winidn})
> > Build libcurl: Shared=yes, Static=no
> > Built-in manual: enabled
> > --libcurl option: enabled (--disable-libcurl-option)
> > Verbose errors: enabled (--disable-verbose)
> > Code coverage: disabled
> > SSPI: no (--enable-sspi)
> > ca cert bundle: /etc/pki/tls/certs/ca-bundle.crt
> > ca cert path: no
> > ca fallback: no
> > LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib)
> > LDAPS: no (--enable-ldaps)
> > RTSP: no (--enable-rtsp)
> > RTMP: no (--with-librtmp)
> > PSL: no (libpsl not found)
> > Alt-svc: enabled (--disable-alt-svc)
> > Headers API: enabled (--disable-headers-api)
> > HSTS: enabled (--disable-hsts)
> > HTTP1: enabled (internal)
> > HTTP2: no (--with-nghttp2, --with-hyper)
> > HTTP3: no (--with-ngtcp2, --with-quiche --with-msh3)
> > ECH: no (--enable-ech)
> > WebSockets: no (--enable-websockets)
> > Protocols: DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS MQTT POP3 POP3S SMTP SMTPS TELNET TFTP
> > Features: HSTS HTTPS-proxy IPv6 Largefile SSL alt-svc
> >
> > Compilation is successful if I use --without-ssl option.
> >
> > I tried with and withoutthe flag OPENSSL_NO_DEPRECATED_3_0. But no change in result.
> >
> > Not sure what I am missing here.
>
> For EVP_PKEY_id, the OpenSSL man page says
> (https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_id.html):
>
> <SNIP>
> The EVP_PKEY_id() and EVP_PKEY_base_id() functions were renamed to
> include get in their names in OpenSSL 3.0, respectively. The old names
> are kept as non-deprecated alias macros.
> </SNIP>
>
> It sounds like you are not compiling against OpenSSL 3.0. You are
> compiling against an older OpenSSL that provides the symbol
> EVP_PKEY_id, and not the newer OpenSSL that provides the symbol
> EVP_PKEY_get_id (with EVP_PKEY_id supplied as a #define).
And it might be worth mentioning... You might find it easier to use
PKG_CONFIG_PATH:
export PKG_CONFIG_PATH=/home/builder/openssl/lib64
./configure ...
It should pick up the OpenSSL at the place you installed it.
Jeff
Date: Sun, 16 Apr 2023 13:40:58 -0400
On Sun, Apr 16, 2023 at 1:36 PM Jeffrey Walton <noloader_at_gmail.com> wrote:
>
> On Sun, Apr 16, 2023 at 1:07 PM Rahul Sabnis via curl-library
> <curl-library_at_lists.haxx.se> wrote:
> >
> > Hello,
> >
> > I get below errors when I try to compile Curl 8.0.1 with OpenSSL 3.1.0 (Same error with OpenSSL 3.0.8 & 3.0.7)
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_id'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_get_next'
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_get0_DH'
> > ../lib/.libs/libcurl.so: undefined reference to `MD4_Update'
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_get0_RSA'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_get_first'
> > ../lib/.libs/libcurl.so: undefined reference to `SSL_get_peer_certificate'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_load_private_key'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_finish'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_get_id'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_ctrl_cmd'
> > ../lib/.libs/libcurl.so: undefined reference to `EVP_PKEY_get0_DSA'
> > ../lib/.libs/libcurl.so: undefined reference to `DSA_get0_key'
> > ../lib/.libs/libcurl.so: undefined reference to `RSA_get0_key'
> > ../lib/.libs/libcurl.so: undefined reference to `DH_get0_key'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_set_default'
> > ../lib/.libs/libcurl.so: undefined reference to `DSA_get0_pqg'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_free'
> > ../lib/.libs/libcurl.so: undefined reference to `MD4_Final'
> > ../lib/.libs/libcurl.so: undefined reference to `DH_get0_pqg'
> > ../lib/.libs/libcurl.so: undefined reference to `MD4_Init'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_ctrl'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_by_id'
> > ../lib/.libs/libcurl.so: undefined reference to `ENGINE_init'
> > collect2: error: ld returned 1 exit status
> > make[2]: *** [curl] Error 1
> >
> > Configure command used:
> > ./configure --prefix=/home/builder/curl --enable-http --with-openssl --enable-cookies --enable-shared=yes --enable-static=no --without-zlib --disable-ldap --disable-ldaps --disable-unix-sockets --disable-rtsp --disable-threaded-resolver --disable-ntlm
> >
> > Configure command output below. Added few other parameters as can be seen below:
> > Host setup: x86_64-pc-linux-gnu
> > Install prefix: /home/builder/curl
> > Compiler: gcc -std=gnu11
> > CFLAGS: -fPIC -Werror-implicit-function-declaration -O2 -Wno-system-headers
> > CPPFLAGS: -Dlinux26 -isystem /home/builder/openssl/include/openssl -DOPENSSL_NO_DEPRECATED_3_0
> > LDFLAGS: -Wl,-R/home/builder/openssl/lib64 -L/home/builder/openssl/lib64
> > LIBS: -lssl -lcrypto -ldl
> >
> > curl version: 8.0.1
> > SSL: enabled (OpenSSL)
> > SSH: no (--with-{libssh,libssh2})
> > zlib: no (--with-zlib)
> > brotli: no (--with-brotli)
> > zstd: no (--with-zstd)
> > GSS-API: no (--with-gssapi)
> > GSASL: no (libgsasl not found)
> > TLS-SRP: no (--enable-tls-srp)
> > resolver: default (--enable-ares / --enable-threaded-resolver)
> > IPv6: enabled
> > Unix sockets: no (--enable-unix-sockets)
> > IDN: no (--with-{libidn2,winidn})
> > Build libcurl: Shared=yes, Static=no
> > Built-in manual: enabled
> > --libcurl option: enabled (--disable-libcurl-option)
> > Verbose errors: enabled (--disable-verbose)
> > Code coverage: disabled
> > SSPI: no (--enable-sspi)
> > ca cert bundle: /etc/pki/tls/certs/ca-bundle.crt
> > ca cert path: no
> > ca fallback: no
> > LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib)
> > LDAPS: no (--enable-ldaps)
> > RTSP: no (--enable-rtsp)
> > RTMP: no (--with-librtmp)
> > PSL: no (libpsl not found)
> > Alt-svc: enabled (--disable-alt-svc)
> > Headers API: enabled (--disable-headers-api)
> > HSTS: enabled (--disable-hsts)
> > HTTP1: enabled (internal)
> > HTTP2: no (--with-nghttp2, --with-hyper)
> > HTTP3: no (--with-ngtcp2, --with-quiche --with-msh3)
> > ECH: no (--enable-ech)
> > WebSockets: no (--enable-websockets)
> > Protocols: DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS MQTT POP3 POP3S SMTP SMTPS TELNET TFTP
> > Features: HSTS HTTPS-proxy IPv6 Largefile SSL alt-svc
> >
> > Compilation is successful if I use --without-ssl option.
> >
> > I tried with and withoutthe flag OPENSSL_NO_DEPRECATED_3_0. But no change in result.
> >
> > Not sure what I am missing here.
>
> For EVP_PKEY_id, the OpenSSL man page says
> (https://www.openssl.org/docs/man3.0/man3/EVP_PKEY_id.html):
>
> <SNIP>
> The EVP_PKEY_id() and EVP_PKEY_base_id() functions were renamed to
> include get in their names in OpenSSL 3.0, respectively. The old names
> are kept as non-deprecated alias macros.
> </SNIP>
>
> It sounds like you are not compiling against OpenSSL 3.0. You are
> compiling against an older OpenSSL that provides the symbol
> EVP_PKEY_id, and not the newer OpenSSL that provides the symbol
> EVP_PKEY_get_id (with EVP_PKEY_id supplied as a #define).
And it might be worth mentioning... You might find it easier to use
PKG_CONFIG_PATH:
export PKG_CONFIG_PATH=/home/builder/openssl/lib64
./configure ...
It should pick up the OpenSSL at the place you installed it.
Jeff
-- Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-library Etiquette: https://curl.se/mail/etiquette.htmlReceived on 2023-04-16