OpenSSL libssl.so错误未定义引用' ssl3_cbc_remove_padding'

时间:2014-12-19 17:34:19

标签: android-ndk openssl libssl

我目前正在将旧版本的OpenSSL修补到最新的稳定1.0.0o版本(通过import_openssl.sh),以便通过NDK r10c与Android应用程序一起使用。

在构建libssl.so共享库时,我遇到以下错误。

[armeabi] SharedLibrary  : libssl.so
jni/openssl/ssl/s3_enc.c:542: error: undefined reference to 'ssl3_cbc_remove_padding'
jni/openssl/ssl/s3_enc.c:739: error: undefined reference to 'ssl3_cbc_record_digest_supported'
jni/openssl/ssl/s3_enc.c:764: error: undefined reference to 'ssl3_cbc_digest_record'
jni/openssl/ssl/s3_pkt.c:464: error: undefined reference to 'ssl3_cbc_copy_mac'
jni/openssl/ssl/t1_enc.c:763: error: undefined reference to 'tls1_cbc_remove_padding'
jni/openssl/ssl/t1_enc.c:919: error: undefined reference to 'ssl3_cbc_record_digest_supported'
jni/openssl/ssl/t1_enc.c:925: error: undefined reference to 'ssl3_cbc_digest_record'
jni/openssl/ssl/ssl_lib.c:1058: error: undefined reference to 'dtls1_min_mtu' 

以第一个错误为例,我可以在文件s3_enc.c(https://github.com/openssl/openssl/blob/OpenSSL_1_0_0-stable/ssl/s3_enc.c)中看到一个函数' ssl3_cbc_remove_padding'但实际的功能无处可见,只有ssl_locl.h中的原型(https://github.com/openssl/openssl/blob/OpenSSL_1_0_0-stable/ssl/ssl_lib.c),所以我有点困惑。

为了清除这些错误,我们将非常感谢您提供任何帮助或以前的经验。如果您需要我进一步详细说明,请询问。

1 个答案:

答案 0 :(得分:1)

检查各自(s3_enc.c, t1_enc.c, ssl_lib.c)文件中包含的文件.mk。在我的情况下,它没有包含在内,所以我只是在ssl/Android.mk部分的LOCAL_SRC_FILES部分添加这些源文件。