[英]Android-21 static build of libcurl with OpenSSL
我有一个用C ++ 11编写的库(线程,智能指针)。 对于HTTP支持,此库使用libcurl和openssl进行HTTPS支持。 在此之前,lib只能在Windows和iOS上运行。 但我有一个任务是在Android上运行它。
我们的要求是下一个:
我想使用这个版本的lib,因为我们在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中没有终端方法,我决定在没有UI(命令行界面)的情况下构建OpenSSL。 但问题是libcurl需要具有此OpenSSL版本的OpenSSL UI。 OpenSSL使用用户界面抽象来协商对cryprographical引擎中私钥的访问。
是否可以使用最新的OpenSSL为Android构建libcurl? 我应该更换工具链吗?
Android 14之前没有完全支持getpwuid_r
方法,这就是为什么在使用Android 21构建时没有看到错误的原因。请参阅此实现getpwuid_r
提交 。 我认为其他未定义的引用是由于类似的问题。
Androdi-21与libcurl和OpenSSL完美配合,使用Android-8构建产生这些错误的最终库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.