无法链接可执行文件错误。如何将运行库添加到NDK编译代码中 我有一个C++应用程序,特别是一个设备驱动程序(没有GUI),我为Linux编写的,并用Mag文件构建。我想让这个驱动程序在android设备上运行(运行android 29的arm64),因此我在我的linux机器上成功地编译了这个驱动程序,在我的makefile中使用了android NDK standalone工具链,并使用了适当的arm64依赖项

无法链接可执行文件错误。如何将运行库添加到NDK编译代码中 我有一个C++应用程序,特别是一个设备驱动程序(没有GUI),我为Linux编写的,并用Mag文件构建。我想让这个驱动程序在android设备上运行(运行android 29的arm64),因此我在我的linux机器上成功地编译了这个驱动程序,在我的makefile中使用了android NDK standalone工具链,并使用了适当的arm64依赖项,android,c++,android-studio,android-ndk,apk,Android,C++,Android Studio,Android Ndk,Apk,当我通过adb shell将代码推送到android并尝试运行时,我得到错误: CANNOT LINK EXECUTABLE "./gdriver": library "libudev.so.1" not found 驱动程序有一大堆类似的依赖项,因此我有一些问题: 我应该将库/头放在哪里,以便android可以在运行时找到它们? 在Android Studio中,是否有办法将编译后的NDK可执行文件和库打包为apk或类似文件? 有没有办法把它打包,这样

当我通过adb shell将代码推送到android并尝试运行时,我得到错误:

CANNOT LINK EXECUTABLE "./gdriver": library "libudev.so.1" not found
驱动程序有一大堆类似的依赖项,因此我有一些问题: 我应该将库/头放在哪里,以便android可以在运行时找到它们? 在Android Studio中,是否有办法将编译后的NDK可执行文件和库打包为apk或类似文件? 有没有办法把它打包,这样它就可以开箱了

在Android Studio中,是否有办法将编译后的NDK可执行文件和库打包为apk或类似文件

我认为最简单的方法是:

  • 在AS中创建新项目:
    选择项目模板->本机C++
  • 为可执行文件
    gdriver
    重新编写cmake,以编译库
    libgdriver。因此
  • Java\u com\u example\u myapplication\u main activity\u stringFromJNI中的
    libgdriver.so
    调用您的输入函数(函数作为
    libnative lib.so的模板代码)
  • native lib
    cmake中添加库链接:

  • 这只是一个示例,您可以按照自己的意愿实现它,例如根本不需要
    本机库
    ,但要点是重新编译类似于可执行库的库,并从活动调用其入口函数(在本例中,通过JNI)。您的所有库都将成为APK的一部分。

    许多Android版本不会使用不遵循模式
    lib*的本机库。因此
    。问题可能是您的库的名称

    target_link_libraries(native-lib gdriver udev)