DEBUG_FLAGS 在 Yocto 中总是被使用
DEBUG_FLAGS in Yocto is always used
我尝试通过 Yocto 构建我的程序,但遇到了可执行文件大小过大的问题。经过一番调查后,我发现我的程序是使用 GCC 标志 -g(生成调试信息)构建的。原来这个标志是在文件 bitbake.conf:
中设置的
DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}"
# Disabled until the option works properly -feliminate-dwarf2-dups
FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}"
DEBUG_OPTIMIZATION = "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe"
SELECTED_OPTIMIZATION = "${@d.getVar(oe.utils.vartrue('DEBUG_BUILD', 'DEBUG_OPTIMIZATION', 'FULL_OPTIMIZATION', d))}"
因此标志 -g 用于每个构建,没有区别 DEBUG_BUILD
变量是否定义。我发现的唯一解决方法是在我的程序配方中设置 ${DEBUG_FLAGS} = " "
。
所以,我的问题是:有没有更好的解决方案? Yocto 中的所有包都是使用调试标志构建的,这是否正常?好像是overrun的解决方案,尤其是嵌入式设备。
查看@Parthiban 评论。本质上没有问题。
我尝试通过 Yocto 构建我的程序,但遇到了可执行文件大小过大的问题。经过一番调查后,我发现我的程序是使用 GCC 标志 -g(生成调试信息)构建的。原来这个标志是在文件 bitbake.conf:
中设置的DEBUG_FLAGS ?= "-g -feliminate-unused-debug-types ${DEBUG_PREFIX_MAP}"
# Disabled until the option works properly -feliminate-dwarf2-dups
FULL_OPTIMIZATION = "-O2 -pipe ${DEBUG_FLAGS}"
DEBUG_OPTIMIZATION = "-O -fno-omit-frame-pointer ${DEBUG_FLAGS} -pipe"
SELECTED_OPTIMIZATION = "${@d.getVar(oe.utils.vartrue('DEBUG_BUILD', 'DEBUG_OPTIMIZATION', 'FULL_OPTIMIZATION', d))}"
因此标志 -g 用于每个构建,没有区别 DEBUG_BUILD
变量是否定义。我发现的唯一解决方法是在我的程序配方中设置 ${DEBUG_FLAGS} = " "
。
所以,我的问题是:有没有更好的解决方案? Yocto 中的所有包都是使用调试标志构建的,这是否正常?好像是overrun的解决方案,尤其是嵌入式设备。
查看@Parthiban 评论。本质上没有问题。