Python 3.4.3 无法构建这些模块 : _hashlib _ssl

标签 python c++ ssl compiler-errors

尝试使用 gcc (Debian 6.2.1-7) 6.2.1 20161215 编译 Python 3.4.3 时出现以下错误:

Failed to build these modules:
_hashlib              _ssl

再次运行 make 时,我得到了更多信息输出:

$ make
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
building '_ssl' extension
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/jj/src/Python-3.4.3/Include -I/home/jj/src/Python-3.4.3 -c /home/jj/src/Python-3.4.3/Modules/_ssl.c -o build/temp.linux-x86_64-3.4/home/jj/src/Python-3.4.3/Modules/_ssl.o
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘_create_tuple_for_X509_NAME’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:694:35: error: dereferencing pointer to incomplete type ‘X509_NAME_ENTRY {aka struct X509_name_entry_st}’
             if (rdn_level != entry->set) {
                                   ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘_get_peer_alt_names’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:814:16: error: dereferencing pointer to incomplete type ‘X509_EXTENSION {aka struct X509_extension_st}’
         p = ext->value->data;
                ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:886:17: warning: ‘ASN1_STRING_data’ is deprecated [-Wdeprecated-declarations]
                 v = PyUnicode_FromStringAndSize((char *)ASN1_STRING_data(as),
                 ^
In file included from /usr/include/openssl/bn.h:31:0,
                 from /usr/include/openssl/asn1.h:24,
                 from /usr/include/openssl/rsa.h:16,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:59:
/usr/include/openssl/asn1.h:553:1: note: declared here
 DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘_get_crl_dp’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:1039:22: error: dereferencing pointer to incomplete type ‘X509 {aka struct x509_st}’
     dps = certificate->crldp;
                      ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘PySSL_compression’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:1431:43: error: dereferencing pointer to incomplete type ‘COMP_METHOD {aka const struct comp_method_st}’
     if (comp_method == NULL || comp_method->type == NID_undef)
                                           ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘context_new’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2012:9: warning: ‘TLSv1_method’ is deprecated [-Wdeprecated-declarations]
         ctx = SSL_CTX_new(TLSv1_method());
         ^~~
In file included from /usr/include/openssl/ct.h:13:0,
                 from /usr/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/include/openssl/ssl.h:1596:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2015:9: warning: ‘TLSv1_1_method’ is deprecated [-Wdeprecated-declarations]
         ctx = SSL_CTX_new(TLSv1_1_method());
         ^~~
In file included from /usr/include/openssl/ct.h:13:0,
                 from /usr/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/include/openssl/ssl.h:1602:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2017:9: warning: ‘TLSv1_2_method’ is deprecated [-Wdeprecated-declarations]
         ctx = SSL_CTX_new(TLSv1_2_method());
         ^~~
In file included from /usr/include/openssl/ct.h:13:0,
                 from /usr/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/include/openssl/ssl.h:1608:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2025:27: warning: implicit declaration of function ‘SSLv2_method’ [-Wimplicit-function-declaration]
         ctx = SSL_CTX_new(SSLv2_method());
                           ^~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2025:27: warning: passing argument 1 of ‘SSL_CTX_new’ makes pointer from integer without a cast [-Wint-conversion]
In file included from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:0:
/usr/include/openssl/ssl.h:1302:17: note: expected ‘const SSL_METHOD * {aka const struct ssl_method_st *}’ but argument is of type ‘int’
 __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
                 ^~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘get_verify_flags’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2275:46: error: dereferencing pointer to incomplete type ‘X509_STORE {aka struct x509_store_st}’
     flags = X509_VERIFY_PARAM_get_flags(store->param);
                                              ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘load_cert_chain’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2468:48: error: dereferencing pointer to incomplete type ‘SSL_CTX {aka struct ssl_ctx_st}’
     pem_password_cb *orig_passwd_cb = self->ctx->default_passwd_callback;
                                                ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘cert_store_stats’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3055:20: error: dereferencing pointer to incomplete type ‘X509_OBJECT {aka struct x509_object_st}’
         switch (obj->type) {
                    ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3065:18: error: ‘X509_LU_PKEY’ undeclared (first use in this function)
             case X509_LU_PKEY:
                  ^~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3065:18: note: each undeclared identifier is reported only once for each function it appears in
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘PySSL_RAND’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3275:9: warning: ‘RAND_pseudo_bytes’ is deprecated [-Wdeprecated-declarations]
         ok = RAND_pseudo_bytes((unsigned char*)PyBytes_AS_STRING(bytes), len);
         ^~
In file included from /usr/include/openssl/ct.h:13:0,
                 from /usr/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/include/openssl/rand.h:47:1: note: declared here
 DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
 ^
At top level:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3808:13: warning: ‘_ssl_thread_locking_function’ defined but not used [-Wunused-function]
 static void _ssl_thread_locking_function
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3795:1: warning: ‘_ssl_threadid_callback’ defined but not used [-Wunused-function]
 _ssl_threadid_callback(CRYPTO_THREADID *id)
 ^~~~~~~~~~~~~~~~~~~~~~
building '_hashlib' extension
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/jj/src/Python-3.4.3/Include -I/home/jj/src/Python-3.4.3 -c /home/jj/src/Python-3.4.3/Modules/_hashopenssl.c -o build/temp.linux-x86_64-3.4/home/jj/src/Python-3.4.3/Modules/_hashopenssl.o
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:42:26: error: field ‘ctx’ has incomplete type
     EVP_MD_CTX           ctx;   /* OpenSSL message digest context */
                          ^~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘EVP_dealloc’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:109:5: warning: implicit declaration of function ‘EVP_MD_CTX_cleanup’ [-Wimplicit-function-declaration]
     EVP_MD_CTX_cleanup(&self->ctx);
     ^~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘EVP_digest’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:145:16: error: storage size of ‘temp_ctx’ isn’t known
     EVP_MD_CTX temp_ctx;
                ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:145:16: warning: unused variable ‘temp_ctx’ [-Wunused-variable]
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘EVP_hexdigest’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:165:16: error: storage size of ‘temp_ctx’ isn’t known
     EVP_MD_CTX temp_ctx;
                ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:165:16: warning: unused variable ‘temp_ctx’ [-Wunused-variable]
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘PKCS5_PBKDF2_HMAC_fast’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:14: error: storage size of ‘hctx_tpl’ isn’t known
     HMAC_CTX hctx_tpl, hctx;
              ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:24: error: storage size of ‘hctx’ isn’t known
     HMAC_CTX hctx_tpl, hctx;
                        ^~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:503:5: warning: implicit declaration of function ‘HMAC_CTX_init’ [-Wimplicit-function-declaration]
     HMAC_CTX_init(&hctx_tpl);
     ^~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:508:9: warning: implicit declaration of function ‘HMAC_CTX_cleanup’ [-Wimplicit-function-declaration]
         HMAC_CTX_cleanup(&hctx_tpl);
         ^~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:24: warning: unused variable ‘hctx’ [-Wunused-variable]
     HMAC_CTX hctx_tpl, hctx;
                        ^~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:14: warning: unused variable ‘hctx_tpl’ [-Wunused-variable]
     HMAC_CTX hctx_tpl, hctx;
              ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: At top level:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_md5_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:57:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(md5)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha1_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:58:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha1)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha224_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:60:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha224)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha256_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:61:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha256)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha384_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:62:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha384)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha512_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:63:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha512)
 ^~~~~~~~~~~~~~~~~~~~~

如您所见,configure 正确选择了我的 OpenSSL 安装位置 (/usr/include/openssl),因此这个问题不是 How do I compile Python 3.4 with custom OpenSSL? 的重复.

为了解决这个错误,我尝试从源代码安装 OpenSSL 到 /usr/local,然后重新运行 Python 的 configuremake:

$ make
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
building '_ssl' extension
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/jj/src/Python-3.4.3/Include -I/home/jj/src/Python-3.4.3 -c /home/jj/src/Python-3.4.3/Modules/_ssl.c -o build/temp.linux-x86_64-3.4/home/jj/src/Python-3.4.3/Modules/_ssl.o
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘_create_tuple_for_X509_NAME’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:694:35: error: dereferencing pointer to incomplete type ‘X509_NAME_ENTRY {aka struct X509_name_entry_st}’
             if (rdn_level != entry->set) {
                                   ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘_get_peer_alt_names’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:814:16: error: dereferencing pointer to incomplete type ‘X509_EXTENSION {aka struct X509_extension_st}’
         p = ext->value->data;
                ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:886:17: warning: ‘ASN1_STRING_data’ is deprecated [-Wdeprecated-declarations]
                 v = PyUnicode_FromStringAndSize((char *)ASN1_STRING_data(as),
                 ^
In file included from /usr/local/include/openssl/bn.h:31:0,
                 from /usr/local/include/openssl/asn1.h:24,
                 from /usr/local/include/openssl/rsa.h:16,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:59:
/usr/local/include/openssl/asn1.h:553:1: note: declared here
 DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x))
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘_get_crl_dp’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:1039:22: error: dereferencing pointer to incomplete type ‘X509 {aka struct x509_st}’
     dps = certificate->crldp;
                      ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘PySSL_compression’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:1431:43: error: dereferencing pointer to incomplete type ‘COMP_METHOD {aka const struct comp_method_st}’
     if (comp_method == NULL || comp_method->type == NID_undef)
                                           ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘context_new’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2012:9: warning: ‘TLSv1_method’ is deprecated [-Wdeprecated-declarations]
         ctx = SSL_CTX_new(TLSv1_method());
         ^~~
In file included from /usr/local/include/openssl/ct.h:13:0,
                 from /usr/local/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/local/include/openssl/ssl.h:1617:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2015:9: warning: ‘TLSv1_1_method’ is deprecated [-Wdeprecated-declarations]
         ctx = SSL_CTX_new(TLSv1_1_method());
         ^~~
In file included from /usr/local/include/openssl/ct.h:13:0,
                 from /usr/local/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/local/include/openssl/ssl.h:1623:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2017:9: warning: ‘TLSv1_2_method’ is deprecated [-Wdeprecated-declarations]
         ctx = SSL_CTX_new(TLSv1_2_method());
         ^~~
In file included from /usr/local/include/openssl/ct.h:13:0,
                 from /usr/local/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/local/include/openssl/ssl.h:1629:1: note: declared here
 DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */
 ^
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2025:27: warning: implicit declaration of function ‘SSLv2_method’ [-Wimplicit-function-declaration]
         ctx = SSL_CTX_new(SSLv2_method());
                           ^~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2025:27: warning: passing argument 1 of ‘SSL_CTX_new’ makes pointer from integer without a cast [-Wint-conversion]
In file included from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:0:
/usr/local/include/openssl/ssl.h:1319:17: note: expected ‘const SSL_METHOD * {aka const struct ssl_method_st *}’ but argument is of type ‘int’
 __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
                 ^~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘get_verify_flags’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2275:46: error: dereferencing pointer to incomplete type ‘X509_STORE {aka struct x509_store_st}’
     flags = X509_VERIFY_PARAM_get_flags(store->param);
                                              ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘load_cert_chain’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:2468:48: error: dereferencing pointer to incomplete type ‘SSL_CTX {aka struct ssl_ctx_st}’
     pem_password_cb *orig_passwd_cb = self->ctx->default_passwd_callback;
                                                ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘cert_store_stats’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3055:20: error: dereferencing pointer to incomplete type ‘X509_OBJECT {aka struct x509_object_st}’
         switch (obj->type) {
                    ^~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3065:18: error: ‘X509_LU_PKEY’ undeclared (first use in this function)
             case X509_LU_PKEY:
                  ^~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3065:18: note: each undeclared identifier is reported only once for each function it appears in
/home/jj/src/Python-3.4.3/Modules/_ssl.c: In function ‘PySSL_RAND’:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3275:9: warning: ‘RAND_pseudo_bytes’ is deprecated [-Wdeprecated-declarations]
         ok = RAND_pseudo_bytes((unsigned char*)PyBytes_AS_STRING(bytes), len);
         ^~
In file included from /usr/local/include/openssl/ct.h:13:0,
                 from /usr/local/include/openssl/ssl.h:61,
                 from /home/jj/src/Python-3.4.3/Modules/_ssl.c:64:
/usr/local/include/openssl/rand.h:47:1: note: declared here
 DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
 ^
At top level:
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3808:13: warning: ‘_ssl_thread_locking_function’ defined but not used [-Wunused-function]
 static void _ssl_thread_locking_function
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_ssl.c:3795:1: warning: ‘_ssl_threadid_callback’ defined but not used [-Wunused-function]
 _ssl_threadid_callback(CRYPTO_THREADID *id)
 ^~~~~~~~~~~~~~~~~~~~~~
building '_hashlib' extension
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/jj/src/Python-3.4.3/Include -I/home/jj/src/Python-3.4.3 -c /home/jj/src/Python-3.4.3/Modules/_hashopenssl.c -o build/temp.linux-x86_64-3.4/home/jj/src/Python-3.4.3/Modules/_hashopenssl.o
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:42:26: error: field ‘ctx’ has incomplete type
     EVP_MD_CTX           ctx;   /* OpenSSL message digest context */
                          ^~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘EVP_dealloc’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:109:5: warning: implicit declaration of function ‘EVP_MD_CTX_cleanup’ [-Wimplicit-function-declaration]
     EVP_MD_CTX_cleanup(&self->ctx);
     ^~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘EVP_digest’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:145:16: error: storage size of ‘temp_ctx’ isn’t known
     EVP_MD_CTX temp_ctx;
                ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:145:16: warning: unused variable ‘temp_ctx’ [-Wunused-variable]
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘EVP_hexdigest’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:165:16: error: storage size of ‘temp_ctx’ isn’t known
     EVP_MD_CTX temp_ctx;
                ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:165:16: warning: unused variable ‘temp_ctx’ [-Wunused-variable]
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: In function ‘PKCS5_PBKDF2_HMAC_fast’:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:14: error: storage size of ‘hctx_tpl’ isn’t known
     HMAC_CTX hctx_tpl, hctx;
              ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:24: error: storage size of ‘hctx’ isn’t known
     HMAC_CTX hctx_tpl, hctx;
                        ^~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:503:5: warning: implicit declaration of function ‘HMAC_CTX_init’ [-Wimplicit-function-declaration]
     HMAC_CTX_init(&hctx_tpl);
     ^~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:508:9: warning: implicit declaration of function ‘HMAC_CTX_cleanup’ [-Wimplicit-function-declaration]
         HMAC_CTX_cleanup(&hctx_tpl);
         ^~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:24: warning: unused variable ‘hctx’ [-Wunused-variable]
     HMAC_CTX hctx_tpl, hctx;
                        ^~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:497:14: warning: unused variable ‘hctx_tpl’ [-Wunused-variable]
     HMAC_CTX hctx_tpl, hctx;
              ^~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c: At top level:
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_md5_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:57:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(md5)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha1_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:58:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha1)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha224_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:60:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha224)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha256_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:61:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha256)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha384_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:62:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha384)
 ^~~~~~~~~~~~~~~~~~~~~
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:54:23: error: storage size of ‘CONST_new_sha512_ctx’ isn’t known
     static EVP_MD_CTX CONST_new_ ## Name ## _ctx; \
                       ^
/home/jj/src/Python-3.4.3/Modules/_hashopenssl.c:63:1: note: in expansion of macro ‘DEFINE_CONSTS_FOR_NEW’
 DEFINE_CONSTS_FOR_NEW(sha512)
 ^~~~~~~~~~~~~~~~~~~~~

虽然您可以看到 configure 现在使用了来自 /usr/local 的 OpenSSL 安装,但还是会出现同样的错误。为什么会出现这些错误,我该如何解决?

最佳答案

我必须在 fedora 26 中安装 compat-openssl10-devel 才能让它工作。完整的命令是 sudo dnf install compat-openssl10-devel --allowerasing。似乎在 openssl 库 API 中有一个向后不兼容的更新导致了这一点。看到这个:https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes#Compatibility_Layer

关于Python 3.4.3 无法构建这些模块 : _hashlib _ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443988/

相关文章:

python - 如何找到一行的值连续达到最大值的次数

c++ - C++ STL 中 SORT 的自定义比较函数?

windows - x509 pfx 文件的正确证书存储

Python,将索引列表转换为切片

python - 如何在没有gil(nogil)的情况下在cython cdef中返回两个值

python - 如何替换变量以查询 DynamoDB 属性?

c++ - 访问 C++ 程序的代码段

c++ - 如何确定枚举中的成员数?

c++ - 为什么没有 asio::ssl::iostream? (以及如何实现)

PostgreSQL 登录 : is the password sent over SSL?