【问题标题】:Cannot locate symbol 'tcgetattr' referenced by "libcrypto.so"找不到“libcrypto.so”引用的符号“tcgetattr”
【发布时间】:2016-01-17 06:46:58
【问题描述】:

我正在为 Android 应用程序构建一个帮助程序库,并且我需要为我正在使用的一些支持库执行完整的 OpenSSL 实现。我正在创建一个构建链并用它编译 libssllibcrypto 但在运行时我得到:

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"...

我猜我需要做些什么来帮助在运行时定位 tcgetattr

【问题讨论】:

  • 您可能使用 API 21 (Android 5.0 Lollipop) 的 Android 平台库构建,但在运行 API 19 (Android 10 KitKat) 或更低版本的设备上进行测试。
  • @AlexCohn 你是救生员!就是这样!我猜我们需要在 API 19 上构建(现在测试)?还有什么? *请随时发布答案,以便我接受。

标签: java android android-ndk openssl


【解决方案1】:

Android 运行时在 API 19 和 API 21 之间发生了显着变化。NDK 库反映了这一变化,许多符号(例如 srand)现在从系统库中导出。因此,将 APP_PLATFORM(如果使用 Android.mk)或 platformVersion(如果使用实验性插件)设置为不高于您的应用支持的最低 SDK 版本非常重要。

【讨论】:

    猜你喜欢
    • 2012-02-21
    • 2021-06-27
    • 2017-03-21
    • 1970-01-01
    • 2017-02-19
    • 2015-04-27
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多