如何为 MinGW 用户安装 gcc-arm-none-eabi?

How to install gcc-arm-none-eabi for MinGW users?

我有兴趣将我的 C++ 程序交叉编译成可以 运行 在 ARM MCU 上运行的程序。为此,我需要安装 gcc-arm-none-eabi。我目前在 Windows 7 机器上,所以我安装了 GCC/make/g++/etc。通过 MinGW。

根据我所做的研究,MinGW 似乎不支持此工具链,这让我相信基于 Windows 的 ARM 开发是不可能的。所以我问:如何使用 MinGW 在本地安装 gcc-arm-none-eabi 工具链?

您可以为此使用 MinGW;您只需要为您选择的工具链换掉 C++ 工具链。您仍然可以从 MSYS 控制台调用它,您的所有其他工具仍然可以使用。 MinGW 或 MSYS 没有任何固有的东西可以做到这一点 "not supported".

我个人安装 GCC 4.9 gcc-arm-none-eabi from launchpad.net,在 MSYS 中挂载工具链的目录,然后导出我需要的路径:

   mount 'C:\PROGRA~2\GNUTOO~147E~1.920' /foo
   mount 'C:\PROGRA~2\GNUTOO~147E~1.920\ARM-NO~1' /foo_local

要发现路径的短名称,请在 Windows 命令提示符处输入 dir /X。在我的机器上,上面的路径分别相当于下面的路径:

  • C:\Program Files (x86)\GNU Tools ARM Embedded.9 2014q4
  • C:\Program Files (x86)\GNU Tools ARM Embedded.9 2014q4\arm-none-eabi

挂载一次即可; export 指令可以添加到 /etc/profile:

   export CPPFLAGS="-I/foo_local/include"
   export CFLAGS="-I/foo_local/include"
   export CXXFLAGS="-I/foo_local/include"
   export LDFLAGS="-L/foo_local/lib -mthreads"
   export PATH=".:/foo_local/bin:/foo/bin:/bin:/opt/bin"

然后 运行 g++.

当然,您也可以跳过所有的导出业务,直接调用您选择的 GCC:

/foo/bin/g++

ELLCC 是另一种选择。您不一定需要将 mingw 或 mingw-64 安装到 运行 它,因为它是静态链接的。 This post talks about using it to target Windows, but the same binary can also be used to target ARM and other processors。不过它基于 clang/LLVM,而不是 gcc。

如果您使用的是 MSYS2、MinGW 合规性,您将能够通过 pacman 安装 arm-none-eabi-gcc 您可以从这里下载:https://www.msys2.org 按照说明正确设置环境。 然后使用下面的命令

pacman -S mingw-w64-x86_64-arm-none-eabi-gcc mingw-w64-x86_64-libwinpthread-git

现在您还需要将其添加到 PATH 中,

echo "export PATH=$PATH:/mingw64/bin" >> ~/.bashrc
source ~/.bashrc

然后,您现在可以使用 MSYS2 shell 调用 arm-none-eabi-gcc。 有关此包的详细信息,请参见此处 https://packages.msys2.org/group/mingw-w64-x86_64-arm-none-eabi-toolchain