You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NDK升级后x86构建报__stack_chk_fail_local未定义的解决过程

解决NDK 22版本下Android x86构建出现__stack_chk_fail_local未定义符号的问题

问题场景

NDK升级至22版本后,Android应用的x86构建出现如下错误:

undefined hidden symbol: __stack_chk_fail_local

常见解决方案为退回NDK 21版本,或在构建配置中添加-fno-stack-protector到cFlags。但此前为规避该问题移除了x86构建后,老Chromebook用户反馈ARM模拟导致应用崩溃,甚至Crashlytics也因模拟崩溃抛出错误:

"armeabi-v7a/libcrashlytics-handler.so" has unexpected e_machine: 40 (EM_ARM)

无法正常获取崩溃报告,因此必须恢复x86架构支持并使用最新NDK版本。

尝试过的无效方案

在build.gradle的android.defaultConfig块中添加如下配置:

externalNativeBuild.cmake.cFlags "-fno-stack-protector"

但查看实际执行的构建命令行发现,系统默认的-fstack-protector-strong仍被添加在参数开头,自定义的-fno-stack-protector排在末尾,无法覆盖原有栈保护设置,问题未解决。

最终有效解决方案

经排查,问题根源在于项目中预构建的libxml2库启用了栈保护机制,依赖__stack_chk_fail_local方法。重新编译该libxml2库,并在编译时添加-fno-stack-protector编译参数后,问题彻底解决。

内容的提问来源于stack exchange,提问作者Darren Taft

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:20:25