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

如何为Yocto构建中的ninvaders添加-fcommon编译标志

解决Yocto Nanbield构建ninvaders的多定义错误

问题根源

GCC新版本默认启用-fno-common替代了旧版的-fcommon,导致ninvaders源码里的全局变量重复定义触发编译错误。

规范解决方案(仅针对ninvaders包)

以下两种方式都符合Yocto规范,且仅对ninvaders生效:

方法1:通过Yocto变量机制追加标志(推荐)

在ninvaders.inc或ninvaders_0.1.1.bb中添加以下代码:

CFLAGS_append = " -fcommon"
# 更精准的包限定写法(避免意外影响其他依赖)
# CFLAGS:${PN} += " -fcommon"

利用Yocto的变量覆盖机制,仅为ninvaders包追加编译标志,不会污染全局配置。

方法2:修改编译命令中的CC参数

直接修改ninvaders.inc里的do_compile函数,给CC添加-fcommon:

do_compile() {
    oe_runmake CC="${CC} -fcommon"
}

这种方式直接作用于ninvaders的编译调用,能快速解决问题。

为何local.conf设置无效?

你在local.conf中追加CFLAGS无效,是因为ninvaders的Makefile可能未主动读取CFLAGS变量,配方里的do_compile仅传递了CC变量,导致全局追加的标志没被应用到实际编译流程中。上面两种方法都能确保-fcommon直接作用于ninvaders的编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:25:15