为Android NDK R17b编译OpenSSL

时间:2018-07-02 12:41:20

标签: android android-ndk openssl

我尝试了How to build and integrate OpenSSL into your Android NDK project – Scottyab's blog,但是遇到了问题:

错误消息

openssl/x86_64/lib/libcrypto.a(eng_openssl.o):eng_openssl.c:function test_rc4_init_key: error: undefined reference to 'stderr'
openssl/x86_64/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function close_console: error: undefined reference to 'stdin'
openssl/x86_64/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function close_console: error: undefined reference to 'stderr'
openssl/x86_64/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function open_console: error: undefined reference to 'stdin'
openssl/x86_64/lib/libcrypto.a(ui_openssl.o):ui_openssl.c:function open_console: error: undefined reference to 'stderr'

我尝试了Compilation fails with android ndk r15b · Issue #3826 · openssl/openssl's comment,它确实消除了其中一个错误,但其他错误仍然存​​在。 Compilation fails with android ndk r15b · Issue #3826 · openssl/openssl's comment建议使用--deprecated-headers,也没有用。

NDK: Unified Headers issue · Issue #445 · android-ndk/ndk's comment表示已解决。我尝试设置CFLAGS=-D__ANDROID_API__=$API,但没有帮助。

我还尝试使用clang作为编译器,并获得

clang: error: unknown argument: '-mandroid'

Android Studio: clang error: unknown argument: '-mandroid''s answer对此有很好的解释。

实际上,faisal00813/openssl_for_ios_and_android: OpenSSL Library for iOS and Android分叉使用clang作为编译器,并且解决了-mandroid错误,但仍然得到undefined reference to 'stdin'

1 个答案:

答案 0 :(得分:1)