加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

为什么bitbake忽略了我的makefile中的CFLAGS?

发布时间:2020-12-13 19:11:06 所属栏目:Linux 来源:网络整理
导读:我的应用程序的makefile为CFLAGS添加了几个东西,如下所示: CFLAGS += -Wall -std=gnu99 但是当我使用OpenEmbedded BitBake构建应用程序时,BitBake显然忽略了makefile中的CFLAGS变量. 我发现在应用程序的配方中添加以下行会导致在构建期间通过BitBake使用标

我的应用程序的makefile为CFLAGS添加了几个东西,如下所示:

CFLAGS += -Wall -std=gnu99

但是当我使用OpenEmbedded BitBake构建应用程序时,BitBake显然忽略了makefile中的CFLAGS变量.

我发现在应用程序的配方中添加以下行会导致在构建期间通过BitBake使用标志:

EXTRA_OEMAKE += "CFLAGS='-Wall -std=gnu99'"

为什么BitBake会忽略makefile中的CFLAGS?此外,是否有比将上述线添加到配方更好的解决方案?

我更喜欢使用makefile的CFLAGS来消除冗余.

最佳答案
默认情况下,bitbake.conf包含EXTRA_OEMAKE =“ – MAKEFLAGS =”,它在运行时传递给make命令(参见base.bbclass,它运行${MAKE} ${EXTRA_OEMAKE}“$@”).

-e选项表示环境变量覆盖makefile(来自make –help).您还会注意到bitbake.conf在其他几个导出变量中设置了导出CFLAGS =“${TARGET_CFLAGS}”,因此在环境中设置了CFLAGS.

这样做的原因是有一些编译器标志在交叉编译时很重要,一般来说,系统比makefile更好地了解使用什么.你发现这有时会失败.

您可以从EXTRA_OEMAKE中删除-e选项,但是您可能存在未正确设置其他关键变量的风险(例如,它是否会找到交叉编译器).另一个稍微清洁的解决方案可能是添加到TARGET_CFLAGS,例如:

TARGET_CFLAGS =“ – Wall -std = gnu99”

不幸的是,这里可能没有完美的解决方案,但希望这有助于理解它为什么会这样做.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读