скомпилировать с ++ программу в yocto

Я следовал учебному пособию, чтобы включить программу C в свой образ yocto. Это сработало как шарм, и теперь у меня на компьютере работает скрипт helloworld.

Я хочу сделать то же самое с C ++, потому что мне нужно загрузить программу, которая использует opencv.

Я попытался изменить c с помощью cpp, но, как я думал, это не удалось. что еще мне нужно изменить, чтобы это работало?
Можете ли вы указать мне любой учебник или пример там? Я не смог найти подходящего на простом примере.

0

Решение

Предположим, что вы следуете этому видео на создание helloWorld.bb а также meta-mylayer

Вот как вы должны скомпилировать файл C ++ в Yocto:

Для начала нужно понять, что такое компилятор GNU и опция флага сборки в Yocto; В bspdir/sources/poky/meta/conf/bitbake.conf Вот список компиляторов, которые bitbake использует для кросс-компиляции:

TOOLCHAIN_OPTIONS = " --sysroot=${STAGING_DIR_TARGET}"
export CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"export CXX = "${CCACHE}${HOST_PREFIX}g++ ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"export FC = "${CCACHE}${HOST_PREFIX}gfortran ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"export CPP = "${HOST_PREFIX}gcc -E${TOOLCHAIN_OPTIONS} ${HOST_CC_ARCH}"export LD = "${HOST_PREFIX}ld${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH}"export CCLD = "${CC}"export AR = "${HOST_PREFIX}ar"export AS = "${HOST_PREFIX}as ${HOST_AS_ARCH}"export RANLIB = "${HOST_PREFIX}ranlib"export STRIP = "${HOST_PREFIX}strip"export OBJCOPY = "${HOST_PREFIX}objcopy"export OBJDUMP = "${HOST_PREFIX}objdump"export STRINGS = "${HOST_PREFIX}strings"export NM = "${HOST_PREFIX}nm"PYTHON = "${@sys.executable}"
export BUILD_CC = "${CCACHE}${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"export BUILD_CXX = "${CCACHE}${BUILD_PREFIX}g++ ${BUILD_CC_ARCH}"export BUILD_FC = "${CCACHE}${BUILD_PREFIX}gfortran ${BUILD_CC_ARCH}"export BUILD_CPP = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH} -E"export BUILD_LD = "${BUILD_PREFIX}ld ${BUILD_LD_ARCH}"export BUILD_CCLD = "${BUILD_PREFIX}gcc ${BUILD_CC_ARCH}"export BUILD_AR = "${BUILD_PREFIX}ar"export BUILD_AS = "${BUILD_PREFIX}as ${BUILD_AS_ARCH}"export BUILD_RANLIB = "${BUILD_PREFIX}ranlib"export BUILD_STRIP = "${BUILD_PREFIX}strip"export BUILD_NM = "${BUILD_PREFIX}nm"
export MAKE = "make"EXTRA_OEMAKE = "-e MAKEFLAGS="EXTRA_OECONF = ""export LC_ALL = "C"

казнить bitbake -e | grep CXX , вы увидите, куда прямо указывает инструментальная цепочка.

export CXX="arm-poky-linux-gnueabi-g++  -march=armv7-a -marm  -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 --sysroot=/mountdata/charles/hio-yocto-bsp/jethro/build/tmp/sysroots/hio-imx6dl-board"

Теперь, понял, где фон цепочки инструментов, мы будем использовать CXX составить рецепт helloworld;

+ Изменить meta-mylayer/recipes-example/example/helloworld-0.1/helloworld.c в helloworld.cpp

#include <stdlib.h>
#include <iostream>

using namespace std;

int main()
{
cout << "hello World "<< endl;
return 0;
}

и изменить helloworld.bb, принять к сведению, что я изменился с {CC} в {CXX} и helloworld.c изменился на helloworld.cpp

SUMMARY = "Simple helloworld application"SECTION = "examples"LICENSE = "MIT"LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file://helloworld.cpp"
S = "${WORKDIR}"
do_compile() {
${CXX} helloworld.cpp -o helloworld
}

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

Теперь вы можете использовать bitbake helloworld создать пакет.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]