HarmonyOS 鸿蒙Next armeabi-v7a架构编译报错ld.lld: error: undefined symbol: __sync_synchronize

HarmonyOS 鸿蒙Next armeabi-v7a架构编译报错ld.lld: error: undefined symbol: __sync_synchronize 碰到的问题和下面这个帖子基本是一样的:

https://developer.huawei.com/consumer/cn/forum/topic/0201897661733700435

编译armeabi-v7a架构时报错:

cke_642.png

按照上面帖子的解决方案,无法解决。而且我看现在cmake的toolchain里已经默认增加了OHOS_C_COMPILER_FLAGS -march=armv7a的配置

cke_2651.png

而且编译期这个配置是有报错的,clang不支持。是因为新版本的clang不支持改参数了吗?

cke_7680.png

同一个工程里arm64-v8a和x86_64架构编译没有上述问题。


更多关于HarmonyOS 鸿蒙Next armeabi-v7a架构编译报错ld.lld: error: undefined symbol: __sync_synchronize的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

解决方案:

针对您的问题,请参考这个:

image.png

更多关于HarmonyOS 鸿蒙Next armeabi-v7a架构编译报错ld.lld: error: undefined symbol: __sync_synchronize的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


感谢回复。

不过我上面这个问题纯粹是编译自己的c++代码的错误,不是由于引入三方so库造成的。

您好,这个文档的链接可以发一下吗?遇到了相同的问题,

在HarmonyOS鸿蒙Next中,使用armeabi-v7a架构编译时,报错ld.lld: error: undefined symbol: __sync_synchronize通常是由于链接器无法找到__sync_synchronize符号的定义。__sync_synchronize是GCC内置函数,用于实现内存屏障(memory barrier),确保多线程环境下的内存操作顺序。

在鸿蒙系统中,__sync_synchronize可能未在目标架构的库中实现,或者链接的库未包含该符号的定义。可能的解决方法包括:

  1. 检查编译器版本和配置,确保使用支持__sync_synchronize的编译器。
  2. 确保链接的库中包含__sync_synchronize的实现,或者手动实现该函数。
  3. 检查编译配置,确保正确设置了目标架构和编译器选项。

如果问题依然存在,可能需要进一步分析编译环境和依赖库。

回到顶部