Я пытался Как собрать и интегрировать OpenSSL в ваш проект Android NDK - блог Скоттиаба , но у него были проблемы:
Сообщение об ошибке
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'
Я пытался Сбой компиляции с android ndk r15b · Проблема № 3826 · Комментарий openssl / openssl , и он действительно удалил одну из ошибок, но остальные остались. Сбой компиляции с android ndk r15b · Выпуск # 3826 · Комментарий openssl / openssl предлагает использовать --deprecated-headers, тоже не работает.
--deprecated-headers
NDK: проблема с унифицированными заголовками · Проблема № 445 · Комментарий android-ndk / ndk говорит, что проблема решена. Я попытался установить CFLAGS=-D__ANDROID_API__=$API, но это не помогло.
CFLAGS=-D__ANDROID_API__=$API
Я также попытался использовать clang в качестве компилятора и получил
clang: error: unknown argument: '-mandroid'
Android Studio: ошибка clang: неизвестный аргумент: ответ '-mandroid' имеет хорошее объяснение этого.
На самом деле faisal00813 / openssl_for_ios_and_android: библиотека OpenSSL для iOS и Android fork использует clang в качестве компилятора, и ошибка -mandroid устранена, но все еще получает undefined reference to 'stdin'
-mandroid
undefined reference to 'stdin'
Я, наконец, использовал willyliu / build-openssl-android: Сборка openssl 1.1.0h с android ndk r17. , и она отлично работала. Мой форк david-hoze / build-openssl-android: Сборка openssl 1.1.0h с android ndk r17. содержит некоторые мелкие исправления