使用Eclipse在Windows中编译ARM

时间:2017-06-28 07:34:48

标签: c gcc arm

我想为cortex-M0处理器制作C程序。我使用64位窗口机器和Eclipse。我在互联网上发现了很多东西,我很困惑: 1.MinGW 2.ARM用于windows的GCC编译器(可以在计算机的高级系统中设置,PATH变量) 3.来自Eclipse市场的ARM GNU编译器

在所有这些中,哪个编译器可以用于ARM,我可以在命令行上输出我的结果。即我可以编译程序并在控制台上生成结果吗?

以下结果是我尝试使用以下命令编译hello程序时得到的结果:arm-none-eabi-gcc -o -tesres -test.c

c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-exit.o): In functio
n `exit':
exit.c:(.text.exit+0x2c): undefined reference to `_exit'
c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-sbrkr.o): In functi
on `_sbrk_r':
sbrkr.c:(.text._sbrk_r+0x18): undefined reference to `_sbrk'
c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-writer.o): In funct
ion `_write_r':
writer.c:(.text._write_r+0x24): undefined reference to `_write'
c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-closer.o): In funct
ion `_close_r':
closer.c:(.text._close_r+0x18): undefined reference to `_close'
c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-fstatr.o): In funct
ion `_fstat_r':
fstatr.c:(.text._fstat_r+0x20): undefined reference to `_fstat'
c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-isattyr.o): In func
tion `_isatty_r':
isattyr.c:(.text._isatty_r+0x18): undefined reference to `_isatty'
c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-lseekr.o): In funct
ion `_lseek_r':
lseekr.c:(.text._lseek_r+0x24): undefined reference to `_lseek'
c:/program files (x86)/gnu tools arm embedded/6 2017-q1-update/bin/../lib/gcc/ar
m-none-eabi/6.3.1/../../../../arm-none-eabi/lib\libc.a(lib_a-readr.o): In functi
on `_read_r':
readr.c:(.text._read_r+0x24): undefined reference to `_read'
collect2.exe: error: ld returned 1 exit status

2 个答案:

答案 0 :(得分:0)

您可以使用Eclipse marketplace中的ARM GNU编译器。安装后,您可以使用正确的项目类型创建一个新的C / C ++项目 -  例如Executable/STM32F0xx C/C++ project如果那是您希望定位的芯片系列。确保向导中的跟踪输出未设置为None (no trace output)。然后,您可以使用trace_printf通过ST-LINK写入主机控制台,正如hello-world示例所示。

您可能还必须安装和配置OpenOCD以捕获该输出并将其显示在Eclipse的控制台中。在Eclipse中,您只需设置一个外部工具Run > External tools > External tools configuration。指定openocd.exe的位置,设置工作目录,并在Arguments中使用相应的配置文件指定您正在使用的devkit,例如: -f board\stm32f072discovery.cfg

然后构建,运行OpenOCD并进行调试。

答案 1 :(得分:-1)

在Windows for M0下,我一直在使用 IAR Embedded Workbench ,这对我来说是一次愉快而顺畅的体验。但据我记得,它需要许可证。 https://en.wikipedia.org/wiki/List_of_ARM_Cortex-M_development_tools

也许你应该在这个列表中寻找免费选项。