我有兴趣把我的c++程序交叉编译成可以在ARM MCU上运行的东西。要做到这一点,我需要安装gcc-arm-none-eabi
。我目前在Windows 7机器上,所以我安装了GCC/make/g++/等。通过MinGW。
从我所做的研究来看,MinGW似乎不支持这个工具链,这使我相信基于windows的ARM开发是不可能的。所以我问:如何使用MinGW在本地安装gcc-arm-none-eabi
工具链?
您可以使用MinGW;您只需要将c++工具链替换为您选择的工具链。您仍然可以从MSYS控制台中调用它,并且所有其他工具仍然可以工作。没有MinGW或MSYS固有的东西使它"不支持"。
我个人从launchpad.net安装GCC 4.9 GCC -arm-none-eabi,在MSYS中挂载工具链目录,然后导出我需要的路径:
mount 'C:PROGRA~2GNUTOO~14947E~1.920' /foo
mount 'C:PROGRA~2GNUTOO~14947E~1.920ARM-NO~1' /foo_local
要发现路径的短名称,在Windows命令提示符中写入dir /X
。在我的机器上,上面的路径分别相当于以下内容:
-
C:Program Files (x86)GNU Tools ARM Embedded4.9 2014q4
-
C:Program Files (x86)GNU Tools ARM Embedded4.9 2014q4arm-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++
如果您使用的是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
ELLCC是另一个选择。您不一定需要安装mingw或mingw-64来运行它,因为它是静态链接的。这篇文章讨论了如何使用它来瞄准Windows,但同样的二进制文件也可以用来瞄准ARM和其他处理器。它基于clang/LLVM,而不是gcc。