掌機 - Pandora(Rebirth) - SuperZaxxon - 解決openssl.c:(.text+0x750): undefined reference to BIO_get_shutdown問題



問題如下:

[  1%] Built target cmsys
[  1%] Built target cmsys_c
[  2%] Built target cmsysTestsC
[  2%] Built target cmsysTestDynload
[  3%] Built target cmsysTestsCxx
[  3%] Built target cmsysTestProcess
[  4%] Built target cmstd
[  5%] Built target kwiml_test
[  6%] Built target cmlibrhash
[  8%] Built target cmzlib
[ 10%] Built target cmnghttp2
[ 25%] Built target cmcurl
[ 25%] Linking C executable curltest
lib/libcmcurl.a(curl_sha512_256.c.o): In function `Curl_sha512_256_init':
curl_sha512_256.c:(.text+0x4): undefined reference to `EVP_MD_CTX_new'
curl_sha512_256.c:(.text+0xe): undefined reference to `EVP_sha512_256'
curl_sha512_256.c:(.text+0x24): undefined reference to `EVP_MD_CTX_free'
lib/libcmcurl.a(curl_sha512_256.c.o): In function `Curl_sha512_256_finish_v':
curl_sha512_256.c:(.text+0x4a): undefined reference to `EVP_MD_CTX_free'
lib/libcmcurl.a(curl_sha512_256.c.o): In function `Curl_sha512_256it':
curl_sha512_256.c:(.text+0x5c): undefined reference to `EVP_MD_CTX_new'
curl_sha512_256.c:(.text+0x64): undefined reference to `EVP_sha512_256'
curl_sha512_256.c:(.text+0x8c): undefined reference to `EVP_MD_CTX_free'
curl_sha512_256.c:(.text+0x96): undefined reference to `EVP_MD_CTX_free'
curl_sha512_256.c:(.text+0xb4): undefined reference to `EVP_MD_CTX_free'
lib/libcmcurl.a(sha256.c.o): In function `my_sha256_init':
sha256.c:(.text+0x4): undefined reference to `EVP_MD_CTX_new'
sha256.c:(.text+0x24): undefined reference to `EVP_MD_CTX_free'
lib/libcmcurl.a(sha256.c.o): In function `Curl_sha256it':
sha256.c:(.text+0x5c): undefined reference to `EVP_MD_CTX_new'
sha256.c:(.text+0x90): undefined reference to `EVP_MD_CTX_free'
sha256.c:(.text+0x9a): undefined reference to `EVP_MD_CTX_free'
lib/libcmcurl.a(sha256.c.o): In function `my_sha256_final':
sha256.c:(.text+0x4e): undefined reference to `EVP_MD_CTX_free'
lib/libcmcurl.a(openssl.c.o): In function `Curl_ossl_version':
openssl.c:(.text+0x3d6): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `ossl_get_channel_binding':
openssl.c:(.text+0x474): undefined reference to `SSL_get1_peer_certificate'
openssl.c:(.text+0x47e): undefined reference to `X509_get_signature_nid'
lib/libcmcurl.a(openssl.c.o): In function `ossl_sha256sum':
openssl.c:(.text+0x544): undefined reference to `EVP_MD_CTX_new'
openssl.c:(.text+0x55e): undefined reference to `EVP_MD_CTX_free'
openssl.c:(.text+0x580): undefined reference to `EVP_MD_CTX_free'
lib/libcmcurl.a(openssl.c.o): In function `ossl_close':
openssl.c:(.text+0x5fe): undefined reference to `BIO_meth_free'
lib/libcmcurl.a(openssl.c.o): In function `ossl_bio_cf_create':
openssl.c:(.text+0x6fe): undefined reference to `BIO_set_shutdown'
openssl.c:(.text+0x706): undefined reference to `BIO_set_init'
openssl.c:(.text+0x70e): undefined reference to `BIO_set_data'
lib/libcmcurl.a(openssl.c.o): In function `ossl_bio_cf_ctrl':
openssl.c:(.text+0x720): undefined reference to `BIO_get_data'
openssl.c:(.text+0x742): undefined reference to `BIO_set_shutdown'
lib/libcmcurl.a(openssl.c.o): In function `ossl_bio_cf_out_write':
openssl.c:(.text+0x770): undefined reference to `BIO_get_data'
lib/libcmcurl.a(openssl.c.o): In function `ossl_init':
openssl.c:(.text+0x816): undefined reference to `OPENSSL_init_ssl'
lib/libcmcurl.a(openssl.c.o): In function `ossl_strerror':
openssl.c:(.text+0x8e0): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `ossl_close_all':
openssl.c:(.text+0xbca): undefined reference to `OSSL_PROVIDER_unload'
openssl.c:(.text+0xbda): undefined reference to `OSSL_PROVIDER_unload'
openssl.c:(.text+0xbea): undefined reference to `OSSL_LIB_CTX_free'
lib/libcmcurl.a(openssl.c.o): In function `ossl_new_session_cb':
openssl.c:(.text+0xc9a): undefined reference to `SSL_SESSION_get_max_early_data'
lib/libcmcurl.a(openssl.c.o): In function `ossl_infof_cert':
openssl.c:(.text+0xe00): undefined reference to `X509_get0_notBefore'
openssl.c:(.text+0xe4c): undefined reference to `X509_get0_notAfter'
openssl.c:(.text+0xf8a): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `ossl_init_session_and_alpns.isra.12':
openssl.c:(.text+0x10e0): undefined reference to `SSL_set_alpn_protos'
openssl.c:(.text+0x113c): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x1224): undefined reference to `SSL_SESSION_get_max_early_data'
lib/libcmcurl.a(openssl.c.o): In function `ossl_send':
openssl.c:(.text+0x144c): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x1518): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `ossl_set_provider':
openssl.c:(.text+0x15f8): undefined reference to `OSSL_LIB_CTX_load_config'
openssl.c:(.text+0x1626): undefined reference to `OSSL_PROVIDER_available'
openssl.c:(.text+0x1646): undefined reference to `OSSL_PROVIDER_unload'
openssl.c:(.text+0x1656): undefined reference to `OSSL_PROVIDER_unload'
openssl.c:(.text+0x1666): undefined reference to `OSSL_LIB_CTX_free'
openssl.c:(.text+0x169c): undefined reference to `OSSL_PROVIDER_try_load'
openssl.c:(.text+0x16b6): undefined reference to `OSSL_PROVIDER_try_load'
openssl.c:(.text+0x16ca): undefined reference to `OSSL_PROVIDER_unload'
openssl.c:(.text+0x16d8): undefined reference to `OSSL_LIB_CTX_free'
openssl.c:(.text+0x171e): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x17ac): undefined reference to `OSSL_PROVIDER_unload'
openssl.c:(.text+0x17bc): undefined reference to `OSSL_PROVIDER_unload'
openssl.c:(.text+0x17cc): undefined reference to `OSSL_LIB_CTX_free'
openssl.c:(.text+0x17f8): undefined reference to `OSSL_LIB_CTX_new'
openssl.c:(.text+0x1826): undefined reference to `OSSL_LIB_CTX_free'
lib/libcmcurl.a(openssl.c.o): In function `ossl_set_engine':
openssl.c:(.text+0x1886): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `client_cert':
openssl.c:(.text+0x1a50): undefined reference to `OSSL_STORE_open_ex'
openssl.c:(.text+0x1a5e): undefined reference to `OSSL_STORE_expect'
openssl.c:(.text+0x1a72): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x1afe): undefined reference to `OSSL_STORE_load'
openssl.c:(.text+0x1b06): undefined reference to `OSSL_STORE_INFO_get_type'
openssl.c:(.text+0x1b12): undefined reference to `OSSL_STORE_INFO_free'
openssl.c:(.text+0x1b18): undefined reference to `OSSL_STORE_close'
openssl.c:(.text+0x1b2a): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x1c9e): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x1da2): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x1f4a): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x1fea): undefined reference to `OPENSSL_sk_pop_free'
openssl.c:(.text+0x202c): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x226e): undefined reference to `OSSL_STORE_open_ex'
openssl.c:(.text+0x227c): undefined reference to `OSSL_STORE_expect'
openssl.c:(.text+0x2290): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x231e): undefined reference to `OSSL_STORE_load'
openssl.c:(.text+0x2326): undefined reference to `OSSL_STORE_INFO_get_type'
openssl.c:(.text+0x2332): undefined reference to `OSSL_STORE_INFO_free'
openssl.c:(.text+0x2338): undefined reference to `OSSL_STORE_close'
openssl.c:(.text+0x2382): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x241a): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x2634): undefined reference to `EVP_PKEY_get_id'
openssl.c:(.text+0x26b2): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x277e): undefined reference to `OSSL_STORE_INFO_get1_CERT'
openssl.c:(.text+0x2786): undefined reference to `OSSL_STORE_INFO_free'
openssl.c:(.text+0x278c): undefined reference to `OSSL_STORE_close'
openssl.c:(.text+0x27ba): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x2862): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x2906): undefined reference to `OPENSSL_sk_pop'
openssl.c:(.text+0x292e): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x294c): undefined reference to `OPENSSL_sk_pop_free'
openssl.c:(.text+0x2a9e): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x2ba6): undefined reference to `OSSL_STORE_INFO_get1_PKEY'
openssl.c:(.text+0x2bae): undefined reference to `OSSL_STORE_INFO_free'
openssl.c:(.text+0x2bb4): undefined reference to `OSSL_STORE_close'
openssl.c:(.text+0x2be2): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `ossl_shutdown':
openssl.c:(.text+0x3162): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `Curl_ossl_add_session':
openssl.c:(.text+0x326a): undefined reference to `SSL_SESSION_get_max_early_data'
lib/libcmcurl.a(openssl.c.o): In function `Curl_ssl_setup_x509_store':
openssl.c:(.text+0x33bc): undefined reference to `X509_STORE_up_ref'
openssl.c:(.text+0x347e): undefined reference to `X509_STORE_up_ref'
openssl.c:(.text+0x35c4): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x35d6): undefined reference to `OPENSSL_sk_value'
openssl.c:(.text+0x3610): undefined reference to `OPENSSL_sk_pop_free'
openssl.c:(.text+0x365c): undefined reference to `X509_STORE_load_file'
openssl.c:(.text+0x373a): undefined reference to `OPENSSL_sk_pop_free'
openssl.c:(.text+0x3780): undefined reference to `X509_STORE_load_path'
lib/libcmcurl.a(openssl.c.o): In function `ossl_bio_cf_in_read':
openssl.c:(.text+0x38dc): undefined reference to `BIO_get_data'
lib/libcmcurl.a(openssl.c.o): In function `Curl_ossl_ctx_init':
openssl.c:(.text+0x3aae): undefined reference to `TLS_method'
openssl.c:(.text+0x3acc): undefined reference to `SSL_CTX_new_ex'
openssl.c:(.text+0x3b84): undefined reference to `SSL_CTX_set_options'
openssl.c:(.text+0x3ba0): undefined reference to `SSL_CTX_set_default_read_buffer_len'
openssl.c:(.text+0x3bf2): undefined reference to `SSL_CTX_set_ciphersuites'
openssl.c:(.text+0x3c68): undefined reference to `SSL_CTX_set_post_handshake_auth'
openssl.c:(.text+0x3da4): undefined reference to `TLS_client_method'
openssl.c:(.text+0x3dfc): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x3f32): undefined reference to `SSL_CTX_set_keylog_callback'
lib/libcmcurl.a(openssl.c.o): In function `Curl_ossl_report_handshake':
openssl.c:(.text+0x3f8a): undefined reference to `SSL_get_peer_signature_type_nid'
lib/libcmcurl.a(openssl.c.o): In function `ossl_connect_step2':
openssl.c:(.text+0x410c): undefined reference to `SSL_get0_alpn_selected'
openssl.c:(.text+0x41fe): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x4320): undefined reference to `OpenSSL_version'
lib/libcmcurl.a(openssl.c.o): In function `Curl_ossl_check_peer_cert':
openssl.c:(.text+0x4454): undefined reference to `SSL_get1_peer_certificate'
openssl.c:(.text+0x4494): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x44f2): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x455c): undefined reference to `OPENSSL_sk_value'
openssl.c:(.text+0x4566): undefined reference to `X509_get0_pubkey'
openssl.c:(.text+0x4576): undefined reference to `X509_get0_signature'
openssl.c:(.text+0x4598): undefined reference to `EVP_PKEY_get_bits'
openssl.c:(.text+0x45a0): undefined reference to `EVP_PKEY_get_security_bits'
openssl.c:(.text+0x45ba): undefined reference to `EVP_PKEY_get_group_name'
openssl.c:(.text+0x45d4): undefined reference to `EVP_PKEY_get0_type_name'
openssl.c:(.text+0x468c): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x46c0): undefined reference to `OPENSSL_sk_value'
openssl.c:(.text+0x46e8): undefined reference to `ASN1_STRING_get0_data'
openssl.c:(.text+0x4818): undefined reference to `X509_get_X509_PUBKEY'
openssl.c:(.text+0x4842): undefined reference to `X509_get_X509_PUBKEY'
openssl.c:(.text+0x4938): undefined reference to `SSL_get0_verified_chain'
openssl.c:(.text+0x49cc): undefined reference to `OPENSSL_sk_value'
openssl.c:(.text+0x4a74): undefined reference to `X509_get_version'
openssl.c:(.text+0x4b42): undefined reference to `X509_get0_signature'
openssl.c:(.text+0x4b98): undefined reference to `X509_get_X509_PUBKEY'
openssl.c:(.text+0x4bf0): undefined reference to `X509_get0_extensions'
openssl.c:(.text+0x4bf6): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x4c30): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x4c40): undefined reference to `OPENSSL_sk_value'
openssl.c:(.text+0x4ca2): undefined reference to `EVP_PKEY_get_bn_param'
openssl.c:(.text+0x4cb2): undefined reference to `EVP_PKEY_get_bn_param'
openssl.c:(.text+0x4d1e): undefined reference to `X509_get0_notBefore'
openssl.c:(.text+0x4d62): undefined reference to `X509_get0_notAfter'
openssl.c:(.text+0x4db0): undefined reference to `EVP_PKEY_get_id'
openssl.c:(.text+0x5022): undefined reference to `EVP_PKEY_get_bn_param'
openssl.c:(.text+0x5032): undefined reference to `EVP_PKEY_get_bn_param'
openssl.c:(.text+0x5042): undefined reference to `EVP_PKEY_get_bn_param'
openssl.c:(.text+0x5052): undefined reference to `EVP_PKEY_get_bn_param'
openssl.c:(.text+0x51f4): undefined reference to `EVP_PKEY_get_bn_param'
lib/libcmcurl.a(openssl.c.o):openssl.c:(.text+0x5204): more undefined references to `EVP_PKEY_get_bn_param' follow
lib/libcmcurl.a(openssl.c.o): In function `Curl_ossl_check_peer_cert':
openssl.c:(.text+0x541e): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x54f4): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x55c2): undefined reference to `SSL_get1_peer_certificate'
openssl.c:(.text+0x55cc): undefined reference to `OPENSSL_sk_value'
openssl.c:(.text+0x55e0): undefined reference to `OPENSSL_sk_num'
openssl.c:(.text+0x581a): undefined reference to `ASN1_STRING_get0_data'
lib/libcmcurl.a(openssl.c.o): In function `ossl_connect':
openssl.c:(.text+0x59a8): undefined reference to `SSL_CTX_set_options'
openssl.c:(.text+0x59c4): undefined reference to `SSL_CTX_set_default_read_buffer_len'
openssl.c:(.text+0x5a1c): undefined reference to `SSL_CTX_set_ciphersuites'
openssl.c:(.text+0x5a96): undefined reference to `SSL_CTX_set_post_handshake_auth'
openssl.c:(.text+0x5b8a): undefined reference to `BIO_meth_new'
openssl.c:(.text+0x5b9e): undefined reference to `BIO_meth_set_write'
openssl.c:(.text+0x5bac): undefined reference to `BIO_meth_set_read'
openssl.c:(.text+0x5bba): undefined reference to `BIO_meth_set_ctrl'
openssl.c:(.text+0x5bc8): undefined reference to `BIO_meth_set_create'
openssl.c:(.text+0x5bd6): undefined reference to `BIO_meth_set_destroy'
openssl.c:(.text+0x5bee): undefined reference to `BIO_set_data'
openssl.c:(.text+0x5e5c): undefined reference to `SSL_get_early_data_status'
openssl.c:(.text+0x5e94): undefined reference to `TLS_client_method'
openssl.c:(.text+0x5eae): undefined reference to `SSL_CTX_new_ex'
openssl.c:(.text+0x5f36): undefined reference to `TLS_method'
openssl.c:(.text+0x5f78): undefined reference to `SSL_write_early_data'
openssl.c:(.text+0x60e0): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x61ca): undefined reference to `OpenSSL_version'
openssl.c:(.text+0x628e): undefined reference to `SSL_write_early_data'
openssl.c:(.text+0x634c): undefined reference to `SSL_CTX_set_keylog_callback'
lib/libcmcurl.a(openssl.c.o): In function `ossl_bio_cf_ctrl':
openssl.c:(.text+0x750): undefined reference to `BIO_get_shutdown'
collect2: error: ld returned 1 exit status
Utilities/cmcurl/CMakeFiles/curltest.dir/build.make:104: recipe for target 'Utilities/cmcurl/curltest' failed
make[2]: *** [Utilities/cmcurl/curltest] Error 1
CMakeFiles/Makefile2:2225: recipe for target 'Utilities/cmcurl/CMakeFiles/curltest.dir/all' failed
make[1]: *** [Utilities/cmcurl/CMakeFiles/curltest.dir/all] Error 2
Makefile:165: recipe for target 'all' failed
make: *** [all] Error 2

解法如下:

$ cd
$ wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
$ tar xf openssl-1.1.1w.tar.gz
$ cd openssl-1.1.1w
$ ./config
$ make
$ sudo make install

$ export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
$ export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH