2015-10-19 14 views
5

Android uygulamaları için bir yardımcı kitaplık yapıyorum ve kullanıyorum bazı destek kitaplıkları için tam bir OpenSSL uygulamasına ihtiyacım var. Ben bir yapı zinciri oluşturarak ve onunla libssl ve libcrypto derleme ama zamanında ben alacağım:"libcrypto.so" tarafından başvurulan 'tcgetattr' simgesi bulunamıyor

java.lang.ExceptionInInitializerError 
    Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: 
    soinfo_relocate(linker.cpp:975): cannot locate symbol "tcgetattr" referenced by "libcrypto.so.1.0.0"... 

Ben zamanında tcgetattr bulmaya yardımcı olmak için yapmanız gereken bir şey var tahmin ediyorum?

+1

Muhtemelen API 21 (Android 5.0 Lollipop) için Android platform kitaplıklarını kullanarak oluşturuyorsunuz, ancak API 19 (Android 10 KitKat) veya daha düşük bir sürümünü çalıştıran bir aygıt üzerinde test edin. –

+0

@AlexCohn Sen bir hayat kurtarıcısın! Öyleydi! Tahminimce API 19 üzerine kurmamız gerekiyor (bunu şimdi test ediyoruz)? Başka bir şey? * Yanıt vermeyi kabul ediyorum, böylece kabul edebilirim. – Kagetsuki

cevap

5

Android çalışma zamanı, API 19 ve API 21 arasında önemli ölçüde değişmiştir. NDK kitaplıkları bu değişikliği yansıtır ve birçok simge (ör. srand) artık sistem kitaplıklarından dışa aktarılır. Bu nedenle, uygulamanızın desteklediği en düşük SDK sürümünden daha yüksek olmayan APP_PLATFORM (eğer Android.mk kullanılıyorsa) veya platformVersion (deneysel eklenti kullanılıyorsa) ayarlamak önemlidir.