allsettingsdone
@allsettingsdone

Как скомпилировать простой проект для ARM STM32 в Sublime Text 3 ?

Установил компилятор "GNU Tools ARM Embedded" и Make, PATH в систему добавлен, вот содержимое файла проекта st3.sublime-project:
{
	"folders":
	[
		{
			"follow_symlinks": true,
			"path": "."
		}
	],

"build_systems":
	[
		{
			"name": "ARM build",
			"cmd": ["make"],
			"working_dir": "${project_path}"
		}
	]
}


Пытаюсь скомпилировать main.cpp:
int main(void)
{
	while(1)
	{
		
	}
}


При попытке компиляции в консоли пишется:
arm-none-eabi-gcc main.cpp
[Finished in 0.4s with exit code 2]
[cmd: ['make']]
[dir: X:\st3]
c:/program files (x86)/gnu tools arm embedded/4.8 2014q2/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/lib\libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text.exit+0x2c): undefined reference to `_exit'
collect2.exe: error: ld returned 1 exit status
make: *** [all] Error 1


Использую вот такой makefile:
TARGET = arm-none-eabi-

CHIP = STM32F0XX

LDSCRIPT = STM32F030x6.ld

all:
	arm-none-eabi-gcc main.cpp


В чем может быть проблема? Я думаю что проблема в том, что компилятор не берет или не видит "startup_stm32f10x_md_vl.s".
Тут прикрепленный проектик: https://copy.com/u4vtHeATYVaweCc7
  • Вопрос задан
  • 4663 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Drimler
возможно, надо сам код подправить - например: int main() {..} на void main() {..} ну или ретурн после цикла запихнуть..
точно не помню, но ошибка сильно напоминает что-то такое..
Ответ написан
Комментировать
allsettingsdone
@allsettingsdone Автор вопроса
Вообщем проблема на пути к её исчерпыванию. Я просто попробовал использовать более новую версию make.exe (4.1 против 3.81) и при сборке получаю теперь следующее:
makefile:296: warning: overriding recipe for target '.'
makefile:293: warning: ignoring old recipe for target '.'
makefile:299: warning: overriding recipe for target '.'
makefile:296: warning: ignoring old recipe for target '.'
makefile:302: warning: overriding recipe for target '.'
makefile:299: warning: ignoring old recipe for target '.'
--- building test1. defines: -DSTM32F030x6 -DVER_MAJOR=0 -DVER_MINOR=1 -DHSE_VALUE=8000000
makefile:296: warning: overriding recipe for target '.'
makefile:293: warning: ignoring old recipe for target '.'
makefile:299: warning: overriding recipe for target '.'
makefile:296: warning: ignoring old recipe for target '.'
makefile:302: warning: overriding recipe for target '.'
makefile:299: warning: ignoring old recipe for target '.'
makefile:296: warning: overriding recipe for target '.'
makefile:293: warning: ignoring old recipe for target '.'
makefile:299: warning: overriding recipe for target '.'
makefile:296: warning: ignoring old recipe for target '.'
makefile:302: warning: overriding recipe for target '.'
makefile:299: warning: ignoring old recipe for target '.'
--- compiling main.cpp...
--- linking...
c:/program files (x86)/gnu tools arm embedded/4.8 2014q2/bin/../lib/gcc/arm-none-eabi/4.8.4/../../../../arm-none-eabi/bin/ld.exe: warning: cannot find entry symbol Reset_Handler; defaulting to 08000000
makefile:296: warning: overriding recipe for target '.'
makefile:293: warning: ignoring old recipe for target '.'
makefile:299: warning: overriding recipe for target '.'
makefile:296: warning: ignoring old recipe for target '.'
makefile:302: warning: overriding recipe for target '.'
makefile:299: warning: ignoring old recipe for target '.'
--- make hex...
makefile:296: warning: overriding recipe for target '.'
makefile:293: warning: ignoring old recipe for target '.'
makefile:299: warning: overriding recipe for target '.'
makefile:296: warning: ignoring old recipe for target '.'
makefile:302: warning: overriding recipe for target '.'
makefile:299: warning: ignoring old recipe for target '.'
--- making asm-lst...
   text	   data	    bss	    dec	    hex	filename
      0	      0	    768	    768	    300	./test1.elf
"Errors: none"
[Finished in 0.6s]

При этом создаются следующие файлы: main.d, main.lst, main.o, test1.elf, test1.hex, test1.lss, test1.map.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы