【发布时间】:2020-08-25 03:38:42
【问题描述】:
我正在尝试在 CentOS 6.10 上编译 Python 3.7.2,但在编译时遇到了一些错误。
我按照这些说明安装了 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
openssl 安装在 /usr/local/ssl 。
然后我按照这些说明安装了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
然后我去./Python-3.7.2/Modules/通过取消注释一些代码来修改Setup.dist文件:
# 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
然后我回到Python-3.7.2文件并输入安装说明:
./configure
make
make altinstall
但是,当我执行上面的make 命令时,系统显示如下消息:
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
python3.7.2 的 openssl 似乎有问题。我该如何解决这个问题?
【问题讨论】:
标签: python linux ssl openssl centos