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

Posted

技术标签:

【中文标题】如何为 MinGW 用户安装 gcc-arm-none-eabi?【英文标题】:How to install gcc-arm-none-eabi for MinGW users? 【发布时间】:2015-05-19 19:23:39 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

您可以为此使用 MinGW;您只需将 C++ 工具链换成您选择的工具链。您仍然可以从 MSYS 控制台调用它,并且您的所有其他工具仍然可以工作。 MinGW 或 MSYS 没有任何固有的特性使其“不受支持”。

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

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

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

C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2014q4 C:\Program Files (x86)\GNU Tools ARM Embedded\4.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++

【讨论】:

【参考方案2】:

如果您使用 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

【讨论】:

【参考方案3】:

ELLCC 是另一种选择。您不一定需要安装 mingw 或 mingw-64 来运行它,因为它是静态链接的。 This post 谈到使用它来定位 Windows,但同样的二进制文件也可以用于定位 ARM and other processors。它基于 clang/LLVM,而不是 gcc。

【讨论】:

网站/链接似乎死了

以上是关于如何为 MinGW 用户安装 gcc-arm-none-eabi?的主要内容,如果未能解决你的问题,请参考以下文章

如何为mingw编译器编译fips?

如何在 Qt Creator 中使用 MinGW-64

OpenOffice 默认模板:如何为许多用户分发/部署/安装它们

如何为vagrant中尚不存在的用户安装目录

如何为 Windows 编译 cymunk?

如何为拥有多个设备的用户管理 APN 令牌?