2014-12-19 7 views
1

현재 NDK r10c를 통해 Android 응용 프로그램과 함께 사용하기 위해 OpenSSL의 이전 버전을 최신 stable 1.0.0o 빌드 (import_openssl.sh를 통해)로 패치하고 있습니다.OpenSSL libssl.so 오류 'ssl3_cbc_remove_padding'에 대한 정의되지 않은 참조

libssl.so sharedlibrary를 빌드하는 동안 다음과 같은 오류가 표시됩니다. 예를 들어 첫 번째 오류 촬영

[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' 

, 난 곳 ssl_locl에만 원형, 보지되어야 할 함수 'ssl3_cbc_remove_padding'그러나 실제 함수 파일 s3_enc.c (https://github.com/openssl/openssl/blob/OpenSSL_1_0_0-stable/ssl/s3_enc.c)에 대한 참조를 볼 수있다. h (https://github.com/openssl/openssl/blob/OpenSSL_1_0_0-stable/ssl/ssl_lib.c) 그래서 나는 약간 혼란 스럽다.

이러한 오류를 해결하려면 도움이나 이전 경험을 높이 평가하십시오. 더 자세히 설명해야한다면, 물어보십시오.

+0

1.0.0 및 1.0.1은 이진 호환됩니다. 왜 최신 1.0.1을 사용하고 하위 기능 문제 및 패치 문제를 피할 수 있습니까? – jww

+0

0.9.8zc 버전을 빌드 할 때 동일한 종류의 문제에 직면하고 있습니다. 어떤 이유로 0.9.8zc 버전을 사용해야했습니다. 이 문제에 대한 해결책이 있습니까? 또한 독립형 NDK 프로젝트를 만들고 openssl을 빌드하면 모든 것이 정상입니다. 하지만 실제 프로젝트에 동일한 코드를 포함하면이 문제가 발생합니다. – gmuhammad

답변

1

파일을 확인하십시오. .mk 파일에 포함되어 있는지 확인하십시오. 내 경우에는 포함되지 않았으므로 ssl/Android.mkLOCAL_SRC_FILES 섹션 아래에이 소스 파일을 추가하기 만하면됩니다.

+0

내 최종 솔루션과 매우 흡사하게, 내 .mk 파일에 s3_enc.c, t1_enc.c 및 ssl_lib.c에 종속적 인 파일이 누락되었습니다 (예 : s3_cbc.c, d1 _ * .c 등). 수동으로 추가했고 그 트릭을하기 위해 솔기를 썼다. – azza50