繁体   English   中英

使用OpenSSL的Android-21静态构建libcurl

[英]Android-21 static build of libcurl with OpenSSL

我有一个用C ++ 11编写的库(线程,智能指针)。 对于HTTP支持,此库使用libcurl和openssl进行HTTPS支持。 在此之前,lib只能在Windows和iOS上运行。 但我有一个任务是在Android上运行它。

我们的要求是下一个:

  1. NDK Android-21平台(在这个平台上看起来我们得到了正确的C ++ 11支持)。
  2. libcurl版本7.44.0
  3. OpenSSL库(libcrypto,libssl)版本1.0.2d

我想使用这个版本的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM