gpt4 book ai didi

c++ - 基于cmake的Bitbake配方:缺少sysroot?

转载 作者:行者123 更新时间:2023-12-02 10:24:48 26 4
gpt4 key购买 nike

我觉得我一定在做一些根本错误的事情。我基于cmake项目创建了一个食谱。使用创建的工具链yocto编译项目就像运行cmake然后make一样简单,但是使用配方无法编译:

SUMMARY = "Opendnp3 is the de facto reference implementation of IEEE-1815 (DNP3)"
DESCRIPTION = "Opendnp3 is a portable, scalable, and rigorously tested implementation of the DNP3 (www.dnp.org) protocol stack written in C++11. The library is designed for high-performance applications like many concurrent TCP sessions or huge device simulations. It also embeds very nicely on Linux."
HOMEPAGE = "https://www.automatak.com/opendnp3"
SECTION = "libs"
DEPENDS = "asio"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://NOTICE;md5=9788d3abe6c9401d72fdb3717de33e6a"
SRCREV = "e00ff31b837821064e5208c15866a9d46f8777b1"
SRC_URI = "git://github.com/automatak/dnp3;branch=2.0.x"
S = "${WORKDIR}/git"
inherit cmake
EXTRA_OECMAKE += ""

问题是我认为用于g++的CXXFLAGS似乎与工具链的环境定义的CXXFLAGS不一致。主要是--sysroot丢失,并且g++无法找到标准的c++头文件(例如:cstdint)。

我仅通过删除-DCMAKE_TOOLCHAIN_FILE = $ {WORKDIR} /toolchain.cmake从cmake.bbclas覆盖do_configure,部分解决了该问题。实际上,CXXFLAGS由toolchain.cmake定义为:
 -march=armv7-a -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a8  --sysroot=/home/star/moxa-build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/dnp3/2.2.0-r0/recipe-sysroot  -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/home/star/moxa-build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/dnp3/2.2.0-r0=/usr/src/debug/dnp3/2.2.0-r0 -fdebug-prefix-map=/home/star/moxa-build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/dnp3/2.2.0-r0/recipe-sysroot-native= -fdebug-prefix-map=/home/star/moxa-build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/dnp3/2.2.0-r0/recipe-sysroot=  -fvisibility-inlines-hidden  -march=armv7-a -mfpu=neon  -mfloat-abi=hard -mcpu=cortex-a8  --sysroot=/home/star/moxa-build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/dnp3/2.2.0-r0/recipe-sysroot

因此sysroot被定义为(实际上是两次):
/home/star/moxa-build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/dnp3/2.2.0-r0/recipe-sysroot

但是最终不会出现在cmake生成的Makefile中,所以我想 toolchain.cmake中的某些内容会使项目的cmake配置向南。

事实证明,这与项目本身有关。随附的.cmake配置文件之一中,C和CXX标志之间存在困惑的情况。我将向维护者提交拉取请求。在SDK(直接包含在CXX命令中)和bitbake之间,对CXXFLAGS的处理方式不同。bitbake解释了其与SDK配合使用的原因(但仍不确定为什么不使用 toolchain.cmake可以使用)。

谢谢。

最佳答案

--sysroot中缺少CXXFLAGS,因为yocto将其填充在CXX变量本身中。请注意,在sysroots目录旁边,yocto将有一个environment-setup-XXX文件,您应该从中获取该文件。这就是所有sysroot东西的来源。

关于c++ - 基于cmake的Bitbake配方:缺少sysroot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45363081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com