【问题标题】:How to cross-compile Boost libraries如何交叉编译 Boost 库
【发布时间】:2020-03-25 11:22:17
【问题描述】:

我正在尝试为 ARM 平台(poky 工具链)交叉编译 Boost 库,而且我是交叉编译的新手。我在第一步遇到问题——运行 bootstrap.sh。我看到很多关于 boost 交叉编译的帖子,但在引导级别的帮助并不多。

几个问题:

1) 我应该在“user-config.jam”中准确输入什么?我试过了:

using gcc : arm : arm-poky-linux-gnueabi-g++ ;

我看到很多指定编译器的确切路径。

2) 放置 user-config.jam 文件的最佳位置在哪里?我尝试了我的主 (~) 文件夹和当前文件夹。

3) 工具链有一个名为“environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi”的文件,我应该在运行引导程序之前“获取它”吗?

任何帮助表示赞赏,谢谢。

【问题讨论】:

  • 如果你使用poky,为什么不在yocto中启用boost并重建工具链,那么boost就包括在内了?
  • 另一个团队拥有工具链的控制权,但我会尝试让他们重建它。谢谢
  • 据我所知,yocto 中已经包含了 boost 的配方,因此您只需将其包含到您的 rootfs 目标和工具链目标中。如果你有一个团队建设 yocto,他们应该知道如何。

标签: c++ boost cross-compiling


【解决方案1】:

常见任务 - 1.64.0 https://www.boost.org/doc/libs/1_64_0/doc/html/bbv2/tasks.html

交叉编译 Boost.Build 支持使用 gcc 和 msvc 工具集进行交叉编译。

使用 gcc 时,首先需要在 user-config.jam 中指定你的交叉编译器(参见“配置”一节),例如:

using gcc : arm : arm-none-linux-gnueabi-g++ ;

之后,如果主机和目标操作系统相同,例如Linux,你可以要求使用这个编译器版本:

b2 toolset=gcc-arm

如果要针对与主机不同的操作系统,则需要另外指定 target-os 功能的值,例如:

# On windows box
b2 toolset=gcc-arm target-os=linux
# On Linux box
b2 toolset=gcc-mingw target-os=windows

有关允许的操作系统名称的完整列表,请参阅 target-os 功能的文档。

使用 msvc 编译器时,只能在 32 位主机上交叉编译到 64 位系统。有关详细信息,请参阅“64 位支持”部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-12
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多