我有一个用C++ 11(线程,智能指针)编写的库。对于HTTP支持,该库使用libcurl和openssl来支持HTTPS。在此之前,lib只能在Windows和iOS上工作。但我有一个任务在Android上运行。Android-21静态构建libcurl与OpenSSL
我们的要求,是未来:
NDK的Android-21平台(貌似这个平台,我们得到正确的C++ 11的支持上)。
的libcurl版本7.44.0
OpenSSL库(libcrypto,的libssl)版本1.0.2d
我想用这个版本库的,因为我们在Windows和iOS的使用它。
我设法使用Android-21平台工具链为armeabi构建这些库。此外,我设法建立我的图书馆的来源。但是,当我联系一起我有这些错误:
third_party/android/prebuilt/arm\libcurl.a(libcurl_la-curl_ntlm_wb.o): In function `ntlm_wb_init':
curl_ntlm_wb.c:(.text+0x194): undefined reference to `getpwuid_r'
curl_ntlm_wb.c:(.text+0x314): undefined reference to `getpwuid_r'
jni/../../../stsw_third_party/android/prebuilt/arm\libcrypto.a(ui_openssl.o): In function `read_string_inner':
ui_openssl.c:(.text+0x16c): undefined reference to `signal'
ui_openssl.c:(.text+0x294): undefined reference to `tcsetattr'
ui_openssl.c:(.text+0x330): undefined reference to `tcsetattr'
jni/../../../stsw_third_party/android/prebuilt/arm\libcrypto.a(ui_openssl.o): In function `open_console':
ui_openssl.c:(.text+0x5fc): undefined reference to `tcgetattr'
我认为Android不具有自己的API终端的方法和我决定建立OpenSSL的无UI(命令行界面)。但问题在于,libcurl需要OpenSSL UI以及这个OpenSSL版本。 OpenSSL使用用户界面抽象来协商访问密码学引擎中的私钥。
是否有可能使用最新的OpenSSL为android构建libcurl?我应该改变我的工具链吗?