向 yocto 构建添加 C 编译标志

问题描述 投票:0回答:1

我正在尝试用 yocto-nanbield 构建 ninvaders。我已经使用两个不同的先前 yocto 版本(sumo 和 dunfell)使用相同的

.inc
.bb
文件构建了它。但据我了解,他们更新了 poky 的 gcc-arm,现在我必须添加
-fcommon
才能使用 yocto 版本 nanbield 编译 ninvaders。鉴于这两个文件的内容非常简单和简短,我在这里分享它们。

ninvaders.inc:

SUMMARY = "nInvaders is a Space Invaders clone based on ncurses for ASCII output."
HOMEPAGE = "https://ninvaders.sourceforge.net/"
SECTION = "Games"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"

DEPENDS = "ncurses (>= 5.2)"

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

do_install() {
    install -d ${D}${bindir}
    install -m 0755 nInvaders ${D}${bindir}
}

ninvaders_0.1.1.bb:

require ninvaders.inc
LICENSE = "GPL-1.0-only"
LIC_FILES_CHKSUM = "file://gpl.txt;md5=393a5ca445f6965873eca0259a17f833"
SRC_URI[md5sum] = "97b2c3fb082241ab5c56ab728522622b"

当我尝试使用

bitbake ninvaders
构建它时,我看到多个定义错误,例如:

multiple definition of `skill_level'; aliens.o:(.bss+0x67c): first defined here

我想要实现的目标非常简单明了。不幸的是我无法让它发挥作用。我从 yocto 手册中了解到的是,我只需在我的

CFLAGS:append = " -fcommon"
文件中添加
local.conf
即可。我这样做了,但仍然看到相同的多个定义错误。

当我使用

bitbake -c devshell ninvaders
打开 devshell 并在 Makefile 中添加该标志时,它就可以工作了。但这显然不是正确的做法。

如何向我的项目添加额外的 C 编译标志?我还想仅为忍者添加这个特定的标志。相反,如果我将其放入 local.conf 中,我想我会为整个构建附加该标志。所以我把它放在 .bb 文件中,但由于它已经在 local.conf 中不起作用,因此在 .bb 文件中也不起作用。如何以仅在构建此特定包时使用的方式附加此标志?

yocto
1个回答
0
投票

已解决。正如我所知,它非常简单,但对于新手来说,这个概念不太容易使用。我只是将 ninvaders.inc 修改为:

SUMMARY = "nInvaders is a Space Invaders clone based on ncurses for ASCII output."
HOMEPAGE = "https://ninvaders.sourceforge.net/"
SECTION = "Games"
SRC_URI = "${SOURCEFORGE_MIRROR}/${BPN}/${BPN}-${PV}.tar.gz"

DEPENDS = "ncurses (>= 5.2)"

EXTRA_CFLAGS = "-fcommon"

EXTRA_OEMAKE = "CC='${CC}' CFLAGS='${EXTRA_CFLAGS}'"

do_compile() {
    oe_runmake
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 nInvaders ${D}${bindir}
} 

EXTRA_OEMAKE 将附加选项附加到 Makefile 的原始内容。

© www.soinside.com 2019 - 2024. All rights reserved.