我正在尝试解决Python的交叉编译(在64b系统上为32b与64b版本一起使用)中的一些问题,这比听起来要棘手。
问题之一是Python语句EVP_get_digestbyname
上的符号>>>import _hashlib
未定义。为了解决这个问题,我按照本指南解包libopenssl-dev:i386
https://www.g-loaded.eu/2008/01/28/how-to-extract-rpm-or-deb-packages/。我能够解压缩必要的库并包含文件(libopenssl-dev和依赖项)。但是,未定义的符号错误仍然存在。
我运行nm -gC libssl.so
,并接收到该文件中没有符号的输出。然后,我运行nm -DgC libssl.so | grep EVP
以在输出中包括动态符号。以下输出显示所有这些符号都未定义。当我检查libssl.so
的默认x86_64版本上的符号时,情况也是一样
U EVP_add_cipher
U EVP_add_digest
U EVP_aes_128_cbc
U EVP_aes_128_cbc_hmac_sha1
U EVP_aes_128_gcm
U EVP_aes_192_cbc
U EVP_aes_256_cbc
U EVP_aes_256_cbc_hmac_sha1
U EVP_aes_256_gcm
U EVP_camellia_128_cbc
U EVP_camellia_256_cbc
U EVP_Cipher
U EVP_CIPHER_block_size
U EVP_CIPHER_CTX_cipher
U EVP_CIPHER_CTX_cleanup
U EVP_CIPHER_CTX_ctrl
U EVP_CIPHER_CTX_flags
U EVP_CIPHER_CTX_free
U EVP_CIPHER_CTX_init
U EVP_CIPHER_CTX_iv_length
U EVP_CIPHER_CTX_new
U EVP_CIPHER_flags
U EVP_CipherInit_ex
U EVP_CIPHER_iv_length
U EVP_CIPHER_key_length
U EVP_DecryptFinal
U EVP_DecryptInit_ex
U EVP_DecryptUpdate
U EVP_des_cbc
U EVP_des_ede3_cbc
U EVP_Digest
U EVP_DigestFinal
U EVP_DigestFinal_ex
U EVP_DigestInit
U EVP_DigestInit_ex
U EVP_DigestSignFinal
U EVP_DigestSignInit
U EVP_DigestUpdate
U EVP_dss1
U EVP_ecdsa
U EVP_enc_null
U EVP_EncryptFinal
U EVP_EncryptInit_ex
U EVP_EncryptUpdate
U EVP_get_cipherbyname
U EVP_get_digestbyname
U EVP_md5
U EVP_MD_CTX_cleanup
U EVP_MD_CTX_copy
U EVP_MD_CTX_copy_ex
U EVP_MD_CTX_create
U EVP_MD_CTX_destroy
U EVP_MD_CTX_init
U EVP_MD_CTX_md
U EVP_MD_CTX_set_flags
U EVP_MD_size
U EVP_MD_type
U EVP_PKEY_asn1_find_str
U EVP_PKEY_asn1_get0_info
U EVP_PKEY_assign
U EVP_PKEY_bits
U EVP_PKEY_copy_parameters
U EVP_PKEY_CTX_ctrl
U EVP_PKEY_CTX_free
U EVP_PKEY_CTX_new
U EVP_PKEY_decrypt
U EVP_PKEY_decrypt_init
U EVP_PKEY_derive_set_peer
U EVP_PKEY_encrypt
U EVP_PKEY_encrypt_init
U EVP_PKEY_free
U EVP_PKEY_missing_parameters
U EVP_PKEY_new
U EVP_PKEY_new_mac_key
U EVP_PKEY_sign
U EVP_PKEY_sign_init
U EVP_PKEY_size
U EVP_PKEY_verify
U EVP_PKEY_verify_init
U EVP_rc2_40_cbc
U EVP_rc2_cbc
U EVP_rc4
U EVP_seed_cbc
U EVP_sha1
U EVP_sha224
U EVP_sha256
U EVP_sha384
U EVP_sha512
U EVP_SignFinal
U EVP_VerifyFinal
为什么未定义这些符号?如果这是正常现象,如何正确创建Python模块_hashlib
? _hashlib
是一个共享对象文件,仅供参考。