简体   繁体   中英

Unable to compile Python on CentOS 6.10 (OpenSSL errors)

I'm trying to compile Python 3.7.2 on CentOS 6.10, but I'm running into some errors when compiling.

I followed these instructions to install openssl:

wget https://www.openssl.org/source/openssl-1.1.1g.tar.gz
tar -xf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config && make && make install

the openssl was installed at /usr/local/ssl . then I followed these instructions to install python3.7.2:

wget http://python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz
tar -xf Python-3.7.2.tar.xz

then I went to ./Python-3.7.2/Modules/ to modify the Setup.dist file by uncommenting some code:

# Socket module helper for socket(2)
_socket socketmodule.c

# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
SSL=/usr/local/ssl
_ssl _ssl.c \
    -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
    -L$(SSL)/lib -lssl -lcrypto

and then I went back to Python-3.7.2 file and typed the installation instructions:

./configure
make
make altinstall

However, when I executed the make command above, the system showed the message like this:

gcc -pthread     -Xlinker -export-dynamic -o python Programs/python.o libpython3.7m.a -lpthread -ldl  -lutil -lrt -L/usr/local/ssl/lib -lssl -lcrypto   -lm
libpython3.7m.a(_ssl.o): In function `PyInit(short, short, long)':
/root/Python-3.7.2/./Modules/_ssl.c:6114: undefined reference to `OpenSSL_version_num'
/root/Python-3.7.2/./Modules/_ssl.c:6124: undefined reference to `OpenSSL_version'
libpython3.7m.a(_ssl.o): In function `sk_ACCESS_DESCRIPTION_num':
/usr/local/include/openssl/x509v3.h:170: undefined reference to `OPENSSL_sk_num'
/usr/local/include/openssl/x509v3.h:170: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_ACCESS_DESCRIPTION_value':
/usr/local/include/openssl/x509v3.h:170: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `PySSLSession_get_ticket_lifetime_hint':
/root/Python-3.7.2/./Modules/_ssl.c:4964: undefined reference to `SSL_SESSION_get_ticket_lifetime_hint'
libpython3.7m.a(_ssl.o): In function `PySSLSession_get_has_ticket':
/root/Python-3.7.2/./Modules/_ssl.c:4986: undefined reference to `SSL_SESSION_has_ticket'
libpython3.7m.a(_ssl.o): In function `PySSL_get_session_reused':
/root/Python-3.7.2/./Modules/_ssl.c:2823: undefined reference to `SSL_session_reused'
libpython3.7m.a(_ssl.o): In function `PySSL_set_session':
/root/Python-3.7.2/./Modules/_ssl.c:2793: undefined reference to `SSL_is_init_finished'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLSocket_compression_impl':
/root/Python-3.7.2/./Modules/_ssl.c:2061: undefined reference to `COMP_get_type'
/root/Python-3.7.2/./Modules/_ssl.c:2063: undefined reference to `COMP_get_type'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLSocket_selected_alpn_protocol_impl':
/root/Python-3.7.2/./Modules/_ssl.c:2036: undefined reference to `SSL_get0_alpn_selected'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLSocket_version_impl':
/root/Python-3.7.2/./Modules/_ssl.c:1993: undefined reference to `SSL_is_init_finished'
libpython3.7m.a(_ssl.o): In function `sk_SSL_CIPHER_num':
/usr/local/include/openssl/ssl.h:958: undefined reference to `OPENSSL_sk_num'
/usr/local/include/openssl/ssl.h:958: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_SSL_CIPHER_value':
/usr/local/include/openssl/ssl.h:958: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLSocket_get_channel_binding_impl':
/root/Python-3.7.2/./Modules/_ssl.c:2638: undefined reference to `SSL_session_reused'
libpython3.7m.a(_ssl.o): In function `get_verify_flags':
/root/Python-3.7.2/./Modules/_ssl.c:3410: undefined reference to `SSL_CTX_get0_param'
libpython3.7m.a(_ssl.o): In function `set_verify_flags':
/root/Python-3.7.2/./Modules/_ssl.c:3423: undefined reference to `SSL_CTX_get0_param'
libpython3.7m.a(_ssl.o): In function `set_post_handshake_auth':
/root/Python-3.7.2/./Modules/_ssl.c:3637: undefined reference to `SSL_CTX_set_post_handshake_auth'
libpython3.7m.a(_ssl.o): In function `get_options':
/root/Python-3.7.2/./Modules/_ssl.c:3545: undefined reference to `SSL_CTX_get_options'
libpython3.7m.a(_ssl.o): In function `set_options':
/root/Python-3.7.2/./Modules/_ssl.c:3554: undefined reference to `SSL_CTX_get_options'
/root/Python-3.7.2/./Modules/_ssl.c:3567: undefined reference to `SSL_CTX_set_options'
/root/Python-3.7.2/./Modules/_ssl.c:3559: undefined reference to `SSL_CTX_clear_options'
libpython3.7m.a(_ssl.o): In function `set_host_flags':
/root/Python-3.7.2/./Modules/_ssl.c:3586: undefined reference to `SSL_CTX_get0_param'
/root/Python-3.7.2/./Modules/_ssl.c:3588: undefined reference to `X509_VERIFY_PARAM_set_hostflags'
libpython3.7m.a(_ssl.o): In function `cipher_to_dict':
/root/Python-3.7.2/./Modules/_ssl.c:1900: undefined reference to `SSL_CIPHER_is_aead'
/root/Python-3.7.2/./Modules/_ssl.c:1901: undefined reference to `SSL_CIPHER_get_cipher_nid'
/root/Python-3.7.2/./Modules/_ssl.c:1903: undefined reference to `SSL_CIPHER_get_digest_nid'
/root/Python-3.7.2/./Modules/_ssl.c:1905: undefined reference to `SSL_CIPHER_get_kx_nid'
/root/Python-3.7.2/./Modules/_ssl.c:1907: undefined reference to `SSL_CIPHER_get_auth_nid'
libpython3.7m.a(_ssl.o): In function `sk_SSL_CIPHER_num':
/usr/local/include/openssl/ssl.h:958: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_SSL_CIPHER_value':
/usr/local/include/openssl/ssl.h:958: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `sk_SSL_CIPHER_num':
/usr/local/include/openssl/ssl.h:958: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLContext_cert_store_stats_impl':
/root/Python-3.7.2/./Modules/_ssl.c:4452: undefined reference to `X509_STORE_get0_objects'
libpython3.7m.a(_ssl.o): In function `sk_X509_OBJECT_num':
/usr/local/include/openssl/x509_vfy.h:58: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_X509_OBJECT_value':
/usr/local/include/openssl/x509_vfy.h:58: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLContext_cert_store_stats_impl':
/root/Python-3.7.2/./Modules/_ssl.c:4455: undefined reference to `X509_OBJECT_get_type'
/root/Python-3.7.2/./Modules/_ssl.c:4458: undefined reference to `X509_OBJECT_get0_X509'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLContext__set_alpn_protocols_impl':
/root/Python-3.7.2/./Modules/_ssl.c:3358: undefined reference to `SSL_CTX_set_alpn_protos'
/root/Python-3.7.2/./Modules/_ssl.c:3360: undefined reference to `SSL_CTX_set_alpn_select_cb'
libpython3.7m.a(_ssl.o): In function `_ssl_configure_hostname':
/root/Python-3.7.2/./Modules/_ssl.c:863: undefined reference to `X509_VERIFY_PARAM_set1_host'
/root/Python-3.7.2/./Modules/_ssl.c:861: undefined reference to `SSL_get0_param'
/root/Python-3.7.2/./Modules/_ssl.c:869: undefined reference to `X509_VERIFY_PARAM_set1_ip'
libpython3.7m.a(_ssl.o): In function `newPySSLSocket':
/root/Python-3.7.2/./Modules/_ssl.c:927: undefined reference to `BIO_up_ref'
/root/Python-3.7.2/./Modules/_ssl.c:928: undefined reference to `BIO_up_ref'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLContext_impl':
/root/Python-3.7.2/./Modules/_ssl.c:3046: undefined reference to `SSL_CTX_set_options'
/root/Python-3.7.2/./Modules/_ssl.c:3077: undefined reference to `OpenSSL_version_num'
/root/Python-3.7.2/./Modules/_ssl.c:3106: undefined reference to `SSL_CTX_get0_param'
/root/Python-3.7.2/./Modules/_ssl.c:3112: undefined reference to `X509_VERIFY_PARAM_set_hostflags'
/root/Python-3.7.2/./Modules/_ssl.c:3116: undefined reference to `SSL_CTX_set_post_handshake_auth'
/root/Python-3.7.2/./Modules/_ssl.c:3046: undefined reference to `SSL_CTX_set_options'
/root/Python-3.7.2/./Modules/_ssl.c:3046: undefined reference to `SSL_CTX_set_options'
/root/Python-3.7.2/./Modules/_ssl.c:2975: undefined reference to `TLS_method'
/root/Python-3.7.2/./Modules/_ssl.c:2977: undefined reference to `TLS_client_method'
/root/Python-3.7.2/./Modules/_ssl.c:2979: undefined reference to `TLS_server_method'
libpython3.7m.a(_ssl.o): In function `_create_tuple_for_X509_NAME':
/root/Python-3.7.2/./Modules/_ssl.c:1174: undefined reference to `X509_NAME_ENTRY_set'
/root/Python-3.7.2/./Modules/_ssl.c:1157: undefined reference to `X509_NAME_ENTRY_set'
libpython3.7m.a(_ssl.o): In function `_decode_certificate':
/root/Python-3.7.2/./Modules/_ssl.c:1594: undefined reference to `X509_get_version'
/root/Python-3.7.2/./Modules/_ssl.c:1629: undefined reference to `X509_getm_notBefore'
/root/Python-3.7.2/./Modules/_ssl.c:1646: undefined reference to `X509_getm_notAfter'
libpython3.7m.a(_ssl.o): In function `sk_GENERAL_NAME_num':
/usr/local/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_GENERAL_NAME_value':
/usr/local/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `sk_GENERAL_NAME_pop_free':
/usr/local/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_pop_free'
libpython3.7m.a(_ssl.o): In function `sk_DIST_POINT_num':
/usr/local/include/openssl/x509v3.h:205: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_DIST_POINT_value':
/usr/local/include/openssl/x509v3.h:205: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `sk_GENERAL_NAME_num':
/usr/local/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_GENERAL_NAME_value':
/usr/local/include/openssl/x509v3.h:166: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLSocket_getpeercert_impl':
/root/Python-3.7.2/./Modules/_ssl.c:1809: undefined reference to `SSL_is_init_finished'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLContext_get_ca_certs_impl':
/root/Python-3.7.2/./Modules/_ssl.c:4503: undefined reference to `X509_STORE_get0_objects'
libpython3.7m.a(_ssl.o): In function `sk_X509_OBJECT_num':
/usr/local/include/openssl/x509_vfy.h:58: undefined reference to `OPENSSL_sk_num'
libpython3.7m.a(_ssl.o): In function `sk_X509_OBJECT_value':
/usr/local/include/openssl/x509_vfy.h:58: undefined reference to `OPENSSL_sk_value'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLContext_get_ca_certs_impl':
/root/Python-3.7.2/./Modules/_ssl.c:4509: undefined reference to `X509_OBJECT_get_type'
/root/Python-3.7.2/./Modules/_ssl.c:4514: undefined reference to `X509_OBJECT_get0_X509'
libpython3.7m.a(_ssl.o): In function `_add_ca_certs':
/root/Python-3.7.2/./Modules/_ssl.c:3900: undefined reference to `SSL_CTX_get_default_passwd_cb_userdata'
/root/Python-3.7.2/./Modules/_ssl.c:3900: undefined reference to `SSL_CTX_get_default_passwd_cb'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLSocket_verify_client_post_handshake_impl':
/root/Python-3.7.2/./Modules/_ssl.c:2674: undefined reference to `SSL_verify_client_post_handshake'
libpython3.7m.a(_ssl.o): In function `_ssl__SSLContext_load_cert_chain_impl':
/root/Python-3.7.2/./Modules/_ssl.c:3773: undefined reference to `SSL_CTX_get_default_passwd_cb'
/root/Python-3.7.2/./Modules/_ssl.c:3774: undefined reference to `SSL_CTX_get_default_passwd_cb_userdata'
collect2: ld returned 1 exit status
make: *** [python] Error 1

It seemed that python3.7.2 had an issue with openssl. How should I solve this problem?

This is likely an issue with an outdated version of the OpenSSL library, which need to be 1.0.2 or 1.1. I think CentOS 6 provides 1.0.1e.

Try to follow these instructions to install OpenSSL under your username, then run the configure script with these arguments:

./configure --with-ensurepip=yes CFLAGS="-I$HOME/openssl/include" LDFLAGS="-L$HOME/openssl/lib"

For more details on this issue, see the Python bug tracker: https://bugs.python.org/issue34028 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM