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
参考示例:北向应用使用三方库二进制文件
步骤:
-
按照示例https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md,在Linux环境编译cjson,得到so文件
-
将so文件拷贝到应用工程目录,并在cmake文件中配置
-
编译运行报错: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
更多关于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
可能未正确配置或支持的架构与目标架构不匹配。
解决方法:
-
检查NDK版本:确保使用的NDK版本与目标架构兼容,并正确配置了NDK路径。
-
检查编译器配置:在
CMakeLists.txt
或build.gradle
中,确保编译器工具链和目标架构配置正确。例如,确认CMAKE_TOOLCHAIN_FILE
指向正确的NDK工具链文件。 -
检查ABI配置:在
build.gradle
中,确保ndk.abiFilters
包含x86_64
,以确保编译时生成与目标架构兼容的二进制文件。 -
检查so文件架构:使用
file
命令检查导入的so文件是否与目标架构一致。例如,执行file libexample.so
,确认输出包含ELF 64-bit LSB shared object, x86-64
。 -
清理和重建项目:使用
Build > Clean Project
和Build > Rebuild Project
清理并重新构建项目,确保编译环境一致。 -
更新DevEco Studio:确保使用的DevEco Studio版本为最新,以避免已知的兼容性问题。
以上步骤可帮助解决ld.lld is incompatible with elf_x86_64
的编译错误。