HarmonyOS 鸿蒙Next DevEco Studio 3.1.1 Release导入so后编译提示ld.lld is incompatible with elf_x86_64

HarmonyOS 鸿蒙Next DevEco Studio 3.1.1 Release导入so后编译提示ld.lld is incompatible with elf_x86_64 环境:DevEco Studio 3.1.1 Release

参考示例:北向应用使用三方库二进制文件

步骤:

  1. 按照示例https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md,在Linux环境编译cjson,得到so文件

  2. 将so文件拷贝到应用工程目录,并在cmake文件中配置

  3. 编译运行报错:ld.lld is incompatible with elf_x86_64

问题一:如何解决?

也看了https://developer.huawei.com/consumer/cn/forum/topic/0201114086945625044?fid=26这个帖子,修改ohos/hvigor-ohos-plugin,提示版本必须大于2.0.0

问题二:北向应用使用三方库二进制文件这个示例提到编写NAPI接口,请问应该如何去使用引用的so里的接口?能否提供一个可运行的项目参考(非源码情况下)


更多关于HarmonyOS 鸿蒙Next DevEco Studio 3.1.1 Release导入so后编译提示ld.lld is incompatible with elf_x86_64的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next DevEco Studio 3.1.1 Release导入so后编译提示ld.lld is incompatible with elf_x86_64的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next DevEco Studio 3.1.1 Release中,导入so文件后编译提示ld.lld is incompatible with elf_x86_64,通常是由于链接器ld.lld与目标架构不兼容。elf_x86_64表示目标架构为64位x86架构,而ld.lld可能未正确配置或支持的架构与目标架构不匹配。

解决方法:

  1. 检查NDK版本:确保使用的NDK版本与目标架构兼容,并正确配置了NDK路径。

  2. 检查编译器配置:在CMakeLists.txtbuild.gradle中,确保编译器工具链和目标架构配置正确。例如,确认CMAKE_TOOLCHAIN_FILE指向正确的NDK工具链文件。

  3. 检查ABI配置:在build.gradle中,确保ndk.abiFilters包含x86_64,以确保编译时生成与目标架构兼容的二进制文件。

  4. 检查so文件架构:使用file命令检查导入的so文件是否与目标架构一致。例如,执行file libexample.so,确认输出包含ELF 64-bit LSB shared object, x86-64

  5. 清理和重建项目:使用Build > Clean ProjectBuild > Rebuild Project清理并重新构建项目,确保编译环境一致。

  6. 更新DevEco Studio:确保使用的DevEco Studio版本为最新,以避免已知的兼容性问题。

以上步骤可帮助解决ld.lld is incompatible with elf_x86_64的编译错误。

回到顶部