我有一个用C++11 (线程、智能指针)编写的库。对于HTTP支持,这个库使用libcurl和openssl来支持HTTPS。在此之前,库只能在Windows和iOS上工作。但我有一项任务要在Android上运行。
我们的要求是:
我想使用这个版本的libs,因为我们在Windows和iOS上使用它。
我成功地用Androd-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使用用户界面抽象来协商对超低温引擎中私钥的访问。
有可能用最新的OpenSSL为安卓系统构建libcurl吗?我应该换一下我的工具链吗?
发布于 2016-03-21 13:06:57
直到Android14才完全支持getpwuid_r方法,这就是为什么在使用Android21构建时没有看到错误的原因。请参阅此提交,它实现了getpwuid_r。我认为其他未定义的引用是由于类似的问题造成的。
发布于 2016-03-18 12:03:38
Androdi-21使用libcurl和OpenSSL完美地工作,使用Android-8构建最终库,从而产生这些错误。
https://stackoverflow.com/questions/36083102
复制相似问题