Linux Lib与Android上的NDK一起使用

问题描述 投票:0回答:1

我尝试在Android设备上使用NDK运行可运行的Linux库。 Android Studio总是告诉我一切都很好,但最终应用程序在设备上崩溃了。在我眼中,唯一的原因是该库使用的某些规范在Android上不起作用。

我做了一个ldd,输出是:

    linux-vdso.so.1 (0x00007ffef7deb000)
    libasound.so.2 => /usr/lib/x86_64-linux-gnu/libasound.so.2 (0x00007fd8ece81000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fd8ecaf8000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd8ec75a000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd8ec542000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd8ec151000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd8ebf4d000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fd8ebd2e000)
    librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fd8ebb26000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fd8ed754000)

我认为它们都是通用的Linux库,必须在具有NDK的Android中使用。这里有人遇到类似的问题吗?

android c++ android-ndk
1个回答
0
投票

Android是Linux,但不是GNU / Linux。该库是为GNU系统构建的。您需要使用NDK重建该库以及libasound。

至于其他库,您不需要构建它们,但是可能值得解释一下:

  • linux-vdso:实际上不是库:)
  • libstdc ++:NDK具有libc ++。so。
  • libgcc:NDK拥有它,自动使用
  • libc,libm,libdl:NDK拥有这些,尽管它们是仿生的,而不是glibc,所以您可能需要进行一些源更改。
  • libpthread,librt:在Android上不是必需的,因为它们只是libc的一部分
  • ld-linux:也不是库,Android将使用/ system / bin / linker64
© www.soinside.com 2019 - 2024. All rights reserved.