簡體   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