Я пытался собрать свою программу через 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 собираются с флагом отладки?Похоже, это решение для переполнения, особенно для встраиваемых устройств.