HarmonyOS 鸿蒙Next 使用opus静态库时提示 ld.lld: error: undefined symbol: __memcpy_chk >>> referenced by decode_core.c(opus中的decode_core.c)

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用opus静态库时提示 ld.lld: error: undefined symbol: __memcpy_chk >>> referenced by decode_core.c(opus中的decode_core.c) 我的opus的静态库是通过 lycium 编译的,编译是可以生成.a文件,但在其他的地方调用就出现错误,错误提示

ld.lld: error: undefined symbol: __memcpy_chk

referenced by decode_core.c

          decode_core.c.o:(silk_decode_core) in archive D:/V7/oh/entry/src/main/cpp/thirdparty/opus/arm64-v8a/lib/libopus.a

请问有大佬试过怎样解决这个问题吗?我尝试去 Cmakelists.txt , 加上 ssp库(-DCMAKE_STATIC_LINKER_FLAGS=-lssp),也不行,去lycium编译opus 加上 -DCMAKE_STATIC_LINKER_FLAGS=-lssp 也不行(生成不了libopus.a),需要怎样改呢?缺少什么库造成的呢?


更多关于HarmonyOS 鸿蒙Next 使用opus静态库时提示 ld.lld: error: undefined symbol: __memcpy_chk >>> referenced by decode_core.c(opus中的decode_core.c)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

楼主您好,该问题需要demo代码进行分析,建议通过在线提单提交问题。

支持 - 在线提单 - 华为开发者联盟 (huawei.com)

更多关于HarmonyOS 鸿蒙Next 使用opus静态库时提示 ld.lld: error: undefined symbol: __memcpy_chk >>> referenced by decode_core.c(opus中的decode_core.c)的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next在使用opus静态库时遇到的链接错误 ld.lld: error: undefined symbol: __memcpy_chk >>> referenced by decode_core.c,此问题通常是由于链接器未能找到__memcpy_chk函数的定义。这个函数是GCC提供的带边界检查的memcpy版本,用于增强安全性。

在鸿蒙系统中,如果静态库或代码依赖于特定的GCC安全函数,而系统库未提供这些函数的实现,就会导致链接错误。解决方法可能包括:

  1. 检查编译选项:确保编译opus库和链接应用程序时使用了兼容的编译器和链接器选项。特别是检查是否有关于安全函数(如-fstack-protector-all)的编译选项,这些选项可能启用了对__memcpy_chk的依赖。

  2. 提供替代实现:如果鸿蒙系统的标准库不支持__memcpy_chk,考虑在项目中添加该函数的替代实现,或者修改opus库以使用标准的memcpy

  3. 检查opus库版本:确保使用的opus库版本与鸿蒙系统兼容。有时,库的更新版本会修复与特定平台不兼容的问题。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部