libssl.so中未定义的符号[ubuntu14]

时间:2018-10-12 20:15:43

标签: python shared-libraries cross-compiling symbols undefined-symbol

我正在尝试解决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是一个共享对象文件,仅供参考。

0 个答案:

没有答案