1

我正在尝试在 bitbake (.bb) 配方的 do_compile 阶段运行脚本。该项目是在一个开放的嵌入式环境中构建的。

1)脚本可以在openembedded环境外成功运行。

2) 脚本在 openembedded 环境中运行时失败,并出现以下错误:

 bin/arm-linux-gnueabihf-ld.bfd -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed   -r -o
 bin/arm-linux-gnueabihf-ld.bfd: unrecognized option '-Wl,-O1'

Openembedded 环境正在添加这些额外的标志,-Wl,-O1 -Wl,--hash-style=gnu。

3) 当脚本在 openembedded 项目外运行时,输出如下:

 bin/arm-linux-gnueabihf-ld.bfd  -r -o 

我正在寻找一种在编译阶段禁用或排除这些链接器、优化和其他标志的方法。我正在努力寻找解决方案,而且我并不精通编码和开发的许多领域。

是否有我可以在脚本内或 bitbake (.bb) 配方内调用的语句,以便可以跳过或忽略这些标志?

或者有没有办法修改我的脚本来识别这些标志?

感谢您提供任何信息或帮助。如果需要,我很乐意提供更多信息。

4

1 回答 1

0

解决了:

do_compile() {
    unset LDFLAGS
    unset CFLAGS
    unset CPPFLAGS
    # remove CC so it is defined here
    sed -e '/^CC\t=/d' -i ${S}/config.mk
    oe_runmake all 

    # fix tools/env Makefile usage
    sed -e 's/$(CROSS_COMPILE)gcc/$(CC)/g' \
        -e 's/ln -s /ln -sf /g' \
        -e '/CFLAGS :=/ aCFLAGS += -DMEM_SIZE_${@d.getVar('KERNEL_BOOTLOADER_MEM_SIZE',1) or '128'}MB' \
        -i ${S}/tools/env/Makefile
    oe_runmake env CC="${CC}"
    oe_runmake fw_env_lib CC="${CC}"}
于 2014-10-14T19:05:57.177 回答