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

Yocto Kirkstone SDK中GCC插件无法解析json::integer_number符号

GCC插件在Yocto Kirkstone Aarch64 SDK中加载失败问题

场景

我拥有一个包含GCC 11.5的Yocto Kirkstone Aarch64 SDK,希望使用该SDK构建并启用GCC插件,但尝试使用时出现以下错误:

error: symbol lookup error: undefined symbol: _ZTVN4json14integer_numberE (fatal)

背景

该SDK与完整嵌入式Linux镜像一同生成,我可修改镜像,但希望无需修改构建层即可构建插件并用于SDK。该插件在我的主机系统(Ubuntu 22.04.5)的GCC 11.4和12.3环境下可正常编译及使用。

构建过程

涉及项目为externis,该项目原生不支持交叉编译的使用方式,我已本地修改以覆盖GCC插件头文件目录,构建命令如下:

cmake -DGCC_PLUGIN_INCLUDE=/opt/toolchains/kirkstone/aarch64/sysroots/x86_64-sdk-linux/usr/lib/aarch64-poky-linux/gcc/aarch64-poky-linux/11.5.0/plugin

注:使用主机系统编译器构建,未使用SDK工具链。插件可正常编译安装,但在SDK环境中通过-fplugin=externis激活时,cc1plus加载插件时出现符号解析失败。

排查进展

已验证符号存在于主机和SDK的cc1plus中,通过readelf可查看到对应符号:

$ readelf -aW /lib/gcc/x86_64-linux-gnu/12/cc1plus | grep _ZTVN4json14integer_numberE
 13196: 0000000002345d70    48 OBJECT  WEAK   DEFAULT   18 _ZTVN4json14integer_numberE

$ readelf -aW /opt/toolchains/kirkstone/aarch64/sysroots/x86_64-sdk-linux/usr/libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/11.5.0/cc1plus | grep _ZTVN4json14integer_numberE
 29612: 0000000001a97e18    48 OBJECT  WEAK   DEFAULT   17 _ZTVN4json14integer_numberE

使用LD_DEBUG=all排查发现,主机cc1plus可提供该符号,但SDK中的cc1plus无法提供,导致符号查找失败。

假设与诉求

可能原因包括:符号表不匹配(如符号版本问题)、Yocto构建GCC时的配置异常(虽已启用--enable-plugin并禁用剥离),或需使用SDK工具链构建插件。目前计划尝试将插件加入Yocto构建,但希望找到无需修改构建层的解决方案,或明确当前策略的问题所在。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 04:25:09