【问题标题】:Compiling issue with Boost asioBoost asio 的编译问题
【发布时间】:2019-11-13 03:05:46
【问题描述】:

我的目标是在我的主机上交叉编译一个带有 Yocto SDK 的代码文件,使其在我的目标板上可执行。我正在使用 SUMO Yocto 版本和 GCC 7.3 交叉编译器

首先,为了得到 YOCTO 交叉编译,我创建了一个文件 Hello.c :

#include <stdio.h>
int main(void)
{
   printf ("Hello World!\n");
   return 0;
}

我编译了执行的文件: make hello

现在我有了一个可以在我的目标板上执行的编译文件。

但现在我有多个 .h 文件和多个 .cpp 文件和一个主文件。 当我像这样执行主文件时: make main 发生错误:

main.cpp:10:10: 致命错误: boost/asio.hpp: 没有这样的文件或目录 包括 ^~~~~~~~~~~~~~~~ 编译终止。 : 目标'main'的配方失败 make: *** [main] 错误 1

我认为 Boostasio.hpp 有问题。 我的 Yocto Linux 映像中是否包含 boost 库? asio.hpp 有什么问题? 请问我该如何解决? 谢谢

【问题讨论】:

  • 你能分享你的 Makefile 吗?您是否检查过该头文件是否确实在您的 SDK rootfs 中?
  • 你可能需要添加类似TOOLCHAIN_TARGET_TASK += "boost-dev"
  • 我将变量TOOLCHAIN_TARGET_TASK += "boost-dev" 添加到local.conf 文件中?
  • 是的,local.conf 没问题
  • 我将 TOOLCHAIN_TARGET_TASK += "boost-dev"IMAGE_INSTALL_append = " boost" 添加到 local.conf 。现在没有错误。谢谢

标签: boost sdk boost-asio yocto


【解决方案1】:

我刚刚注意到,实际上,您使用的不是 SDK,而是仅包含 glibc 以及一些基本工具和 gdb 的工具链;通常用于构建测试应用程序和调试。因此,您需要构建真正的 SDK,其中除了工具链之外,还包含安装在映像的 rootfs 中的包的开发版本(libs/headers/other 文件)。这可以通过以下方式完成:

bitbake -c populate_sdk <your_image>

构建 SDK 后,您需要通过生成的安装程序脚本安装它。另外,在开始工作之前不要忘记获取环境设置脚本!

更多信息请参考https://www.yoctoproject.org/docs/latest/sdk-manual/sdk-manual.html#sdk-building-an-sdk-installer

【讨论】:

  • 当我想构建 SDK 时,我执行了这个:Bitbake meta-toolchain,然后一个名为 SDK 的目录出现在 tmp/deploy/ 下,其中包含 .sh 文件,当我想使用 cross编译器。这不是我必须使用的真正 SDK 吗?
  • 您正在构建的只是工具链 (bitbake meta-toolchain); buildtools(例如交叉编译器、make、ar、ld...)和 glibc(GNU C 标准库),就像 SDK 的精简版。如您所见,使用这些工具您可以构建简单的应用程序,但只要您需要构建一个依赖于第三方库/头文件的应用程序/您需要完整的 SDK (bitbake -c populate_sdk &lt;your_image&gt;),其中包含开发您已在映像 rootfs 中安装的软件包的软件包(即您应该已在映像上安装了野牛)。
  • 我执行了bitbake -c populate_sdk core-image-minimal我检查了tmp/deploy目录下的SDK目录,有一个新的.sh文件被创建。我通过脚本安装了 SDK,我获取了环境。我执行了make main,出现了一些错误
  • 哪种错误?请使用错误日志编辑您的问题。在构建 SDK 之前,您是否已将 IMAGE_INSTALL_append = " boost" 添加到您的 local.conf 中?
  • 不,我没有将 IMAGE_INSTALL_append = "boost" 添加到我的 local.conf。我会添加它并再试一次。但是我应该重新构建我所有的 Linux 映像 + SDK 还是在修改后重新构建 SDK ?
猜你喜欢
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多