HarmonyOS 鸿蒙Next 使用opus静态库时提示 ld.lld: error: undefined symbol: __memcpy_chk >>> referenced by decode_core.c(opus中的decode_core.c)
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
针对HarmonyOS 鸿蒙Next在使用opus静态库时遇到的链接错误 ld.lld: error: undefined symbol: __memcpy_chk >>> referenced by decode_core.c
,此问题通常是由于链接器未能找到__memcpy_chk
函数的定义。这个函数是GCC提供的带边界检查的memcpy
版本,用于增强安全性。
在鸿蒙系统中,如果静态库或代码依赖于特定的GCC安全函数,而系统库未提供这些函数的实现,就会导致链接错误。解决方法可能包括:
-
检查编译选项:确保编译opus库和链接应用程序时使用了兼容的编译器和链接器选项。特别是检查是否有关于安全函数(如
-fstack-protector-all
)的编译选项,这些选项可能启用了对__memcpy_chk
的依赖。 -
提供替代实现:如果鸿蒙系统的标准库不支持
__memcpy_chk
,考虑在项目中添加该函数的替代实现,或者修改opus库以使用标准的memcpy
。 -
检查opus库版本:确保使用的opus库版本与鸿蒙系统兼容。有时,库的更新版本会修复与特定平台不兼容的问题。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,