【问题标题】:Cross compilation: special cross compiler or just gcc with option -march?交叉编译:特殊的交叉编译器或只是带有选项 -march 的 gcc?
【发布时间】:2019-03-02 10:23:32
【问题描述】:

我需要在Linux机器上为Raspberry PI 3+编译一个程序,代码必须符合c++17标准。官方工具链已过时,缺少 c++17 编译选项。我现在可以看到的两个解决方案是:

1) gcc 有一个选项 -march,此处描述:https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

2) 安装 arm-linux-gbueabi-gcc 包,这里建议:Cross-compiling for Raspberry pi with modern gcc

两个选项有什么区别?还有其他可行的方法吗?

【问题讨论】:

  • 你可以在 Pi 上安装一个现代编译器(如果它正在运行一个相当新的发行版,它可能已经有一个)然后简单地在 Pi 上编译代码.
  • 这就是重点,因为在 Pi 上我的项目需要 12 多个小时才能编译,而且每次更改代码都会很痛苦。
  • 那很痛苦。但是,如果需要 12 个小时,我会想象您有一些构建系统问题可以解决以使其更快。喜欢:安装和使用ccache 它对后续构建有很大帮助。确保您的构建系统依赖项是正确的,以便您只重建需要的内容。在可能的情况下,广泛使用前向声明、外部模板等,而不是包括完整的定义。不要包含不需要的标题。等等等等。做这些事情也会加快你的非 Pi 构建。
  • C++ 构建很容易变慢,但可以通过一些努力使其变快(呃)(明显如此)。 6 年前,我使用的大约 500K 行代码库过去需要大约 40 分钟才能在 32 核机器上构建。我们已经将完整构建(在 20 核机器上)的时间缩短到大约 10 分钟,对于大多数带有微小更改的重建,我们将其缩短到 3 分钟。这需要一些工作,但最终结果是巨大的进步。
  • 从零开始编译opencv的代码(最新代码,不断变化),还有一些模板,增加了时间。反正在树莓派上编译比较容易,但是时间很宝贵

标签: c++ linux gcc raspberry-pi3 toolchain


【解决方案1】:

如果您想为您的 Raspberry Pi 提供完整的 Cross Compiler c++17 标准,您可以尝试我最新的用于 Raspberry Pi 的预构建/预编译开源 GCC 工具链以及来自此 Github Repo 的详细说明:

目前可用的 GCC 版本如下:

  • GCC 6.3.0
  • GCC 7.4.0
  • GCC 8.2.0
  • GCC 8.3.0

以及支持的环境:

  • 交叉编译器:目前支持所有 Linux 发行版 (x32/x64)。
  • Native-Compiler:支持所有带有 Raspbian OS 的 Raspberry Pi 版本/型号。其他操作系统可能/可能不工作。

目前支持的语言还有:

  • C++
  • C
  • Fortran

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 2011-07-05
    • 2016-02-05
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多