如何为 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
我有兴趣将我的 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