Символы отладки не извлечены из получающихся двоичных файлов в Yocto - PullRequest
0 голосов
/ 17 января 2020

Фон

Я пытаюсь создать собственное программное обеспечение внутри сборки Yocto. Программное обеспечение построено CMake.

Мой рецепт следующий - customsoftware.bb:

SRCBRANCH = "master"
SRCREV = "master"

MY_SRC = "OMITTED"

SRC_URI = "${MY_SRC};branch=${SRCBRANCH}"

# libraries dependencies
DEPENDS += "boost"

S = "${WORKDIR}/git"
B = "${WORKDIR}/build"

PARALLEL_MAKE ?= "-j 1"

inherit cmake

# My CMake Options
EXTRA_OECMAKE+=" -DSOME_OPTION=ON"

# I want unix makefiles instead on ninja build
OECMAKE_GENERATOR="Unix Makefiles"

Ниже приведена разбавленная версия моего проекта cmake - CMakeLists.txt

Обратите внимание: для краткости я опустил нерелевантные детали

cmake_minimum_required(VERSION 3.0.0)

#---------------------------------------------------------------------------------------
# set default build to release
#---------------------------------------------------------------------------------------
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose Release or Debug" FORCE)
endif()

file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/dist/)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/dist/bin)

set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
set(CMAKE_DISABLE_SOURCE_CHANGES  ON)

if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
    message(FATAL_ERROR "
    ${BoldRed}Error:${ColourReset} In-source builds are not allowed. You should create separate directory for build files.
    ${Magenta}CMAKE_BINARY_DIR${ColourReset}(${CMAKE_SOURCE_DIR}) must be different from ${Magenta}CMAKE_SOURCE_DIR${ColourReset}(${CMAKE_BINARY_DIR})
    ")
endif ()

project(myapp)

find_package(Boost REQUIRED COMPONENTS thread) 

add_executable(${PROJECT_NAME}
  ${HEADERS}
  ${SOURCES}
)

target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES})

#Copy entire contents of dist/ to /opt/myapp
install(DIRECTORY ${CMAKE_BINARY_DIR}/dist/
    DESTINATION /opt/myapp
)

Я добавил свой рецепт к изображению.

Выпуск

Когда я запускаю du -h tmp/work/.../<customsoftware>/build/dist/bin, двоичный размер составляет 80 МБ. Кроме того, после развертывания в целевой системе размер двоичного файла составляет 80 МБ.

ОБНОВЛЕНИЕ

Как указано в комментариях, двоичные файлы в tmp/work/.../<customsoftware>/image не удаляются. Однако двоичные файлы в tmp/work/.../<customsoftware>/packages-split удаляются.

Если я запускаю make в источнике приложения - не через рецепт и вне yocto - размер двоичного файла составляет 1,7 МБ

Вопрос

Если я правильно помню, сборка OE удалит символы отладки из получаемых двоичных файлов.

Почему мой двоичный файл все еще разворачивается с символами отладки? Что я пропустил?

Как я могу убедиться, что только раздетый - Тип выпуска - двоичный файл развернут?

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Не могли бы вы попытаться выяснить, является ли этот простой Hello World раздетым или нет в вашей среде?

recipe:

DESCRIPTION = "Simple helloworld cmake"
LICENSE = "MIT"
SECTION = "examples"
LIC_FILES_CHKSUM = 
"file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = "file://CMakeLists.txt \
           file://helloworld.c"

S = "${WORKDIR}"

inherit cmake

EXTRA_OECMAKE = ""

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.10)
project(helloworld)
add_executable(helloworld helloworld.c)
install(TARGETS helloworld RUNTIME DESTINATION bin)

helloworld. c:

#include <stdio.h>

int main() {
  printf("Hello World Makefile from CMake!\n");
  return(0);
}
0 голосов
/ 22 января 2020

Явное указание типов пакетов и наследование pkgconfig решило мою проблему. Обновленный рецепт:

SRCBRANCH = "master"
SRCREV = "master"

MY_SRC = "OMITTED"

SRC_URI = "${MY_SRC};branch=${SRCBRANCH}"

DEPENDS += "boost"

S = "${WORKDIR}/git"

PARALLEL_MAKE ?= "-j 1"

inherit pkgconfig cmake

EXTRA_OECMAKE+=" -DSOME_OPTION"
OECMAKE_GENERATOR="Unix Makefiles"

# Specify package types
PACKAGES = "${PN}-dbg ${PN}"


FILES_${PN}-dbg += "\
    <INSTALL_PATH>/.debug \
    "

FILES_${PN} += "\
    <INSTALL_PATH>/* \
    "
...