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