繁体   English   中英

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

[英]Why does bitbake ignore CFLAGS in my makefile?

我的应用程序的 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 = "-e MAKEFLAGS="在运行时传递给 make 命令(参见base.bbclass ,它运行${MAKE} ${EXTRA_OEMAKE} "$@" )。

make 的-e选项意味着环境变量覆盖 makefiles(来自make --help )。 您还会注意到bitbake.conf在其他几个导出变量中设置了export CFLAGS = "${TARGET_CFLAGS}" ,因此在环境中设置了CFLAGS

这样做的原因是有一些编译器标志在交叉编译时很重要,一般来说,系统比Makefile更清楚要使用什么。 正如您所发现的那样,这有时会失败。

您可以从EXTRA_OEMAKE删除-e选项,但您可能会面临其他关键变量设置不正确的风险(例如,它会找到交叉编译器)。 另一个稍微干净的解决方案可能是添加到TARGET_CFLAGS ,例如:

TARGET_CFLAGS += "-Wall -std=gnu99"

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM