首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于OpenSSL的libcurl的安卓-21静态构建

基于OpenSSL的libcurl的安卓-21静态构建
EN

Stack Overflow用户
提问于 2016-03-18 11:22:17
回答 2查看 2.4K关注 0票数 1

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

我们的要求是:

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

我想使用这个版本的libs,因为我们在Windows和iOS上使用它。

我成功地用Androd-21平台工具链为armeabi构建了那些库。此外,我还成功地构建了我的库的源代码。但是当我把所有的联系在一起的时候,我得到了这些错误:

代码语言:javascript
复制
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使用用户界面抽象来协商对超低温引擎中私钥的访问。

有可能用最新的OpenSSL为安卓系统构建libcurl吗?我应该换一下我的工具链吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-21 13:06:57

直到Android14才完全支持getpwuid_r方法,这就是为什么在使用Android21构建时没有看到错误的原因。请参阅此提交,它实现了getpwuid_r。我认为其他未定义的引用是由于类似的问题造成的。

票数 2
EN

Stack Overflow用户

发布于 2016-03-18 12:03:38

Androdi-21使用libcurl和OpenSSL完美地工作,使用Android-8构建最终库,从而产生这些错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36083102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档