реклама на сайте
подробности

 
 
> Ошибка сборки проекта в Sublime text2, Sublime text2, GNU Tools ARM Embedded, makefile
allsettingsdone
сообщение Aug 3 2014, 16:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284



Не получается собрать простенький проект на С++ в Sublime text2. Использую компилятор gcc(GNU Tools ARM Embedded), программу make с самописным простеньким makefile. Пути для gcc и make прописаны в PATH.
Вот что пытаюсь собрать:
Код
int main()
{
    
}


Вот настройки проекта sublime text2:
Код
{
    "folders":
    [
        {
            "path": "."
        }
    ],

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

    "settings":
    {
        "sublimeclang_options":
        [
            "-std=c++11",
            "-Wall",
            "-I${project_path}"
        ]
    }
}


Содержимое makefile:
Код
all:
    arm-none-eabi-gcc main.cpp


Вот что получаем на выходе:


Код
arm-none-eabi-gcc main.cpp
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
[Finished in 0.4s with exit code 2]


Как вы думаете, в чем проблема?

проект прикрепляю:

Сообщение отредактировал allsettingsdone - Aug 3 2014, 16:03
Прикрепленные файлы
Прикрепленный файл  sm20.zip ( 3.46 килобайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
psL
сообщение Aug 3 2014, 19:40
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



startup нужен для начальной инициализации процессора (прерываний, стека и т.п.), т.е. для создания окружения в котором уже м.б. запущена функция main. В этом файле обычно содержится нулевой вектор, откуда стартует программа при подаче питания или сбросе, а также вызов функции main.
Поскольку ОС отсутствует, программа обычно не возвращает никуда управления, а остается в вечном цикле for(;;){} или while(1) Поскольку он у вас отсутствует, линкер ищет функцию для передачи управления по завершению main
Насколько понимаю, Sublime это просто стучалка, у которой есть возможность вызова make для проекта. Самый простой способ разобраться со связкой компилятора и редактора - научиться сначала компилировать проект из командной строки. Например, можно взять референсный код мигания светодиодом или аналогичный для вашего или похожего процессора и научиться собирать его при помощи make. Далее подтянуть редактор. Далее уже заниматься программированием конкретной задачи под конкретный процессор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Aug 4 2014, 02:09
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(psL @ Aug 4 2014, 01:40) *
startup нужен для начальной инициализации процессора (прерываний, стека и т.п.), т.е. для создания окружения в котором уже м.б. запущена функция main. В этом файле обычно содержится нулевой вектор, откуда стартует программа при подаче питания или сбросе, а также вызов функции main.

Стартап не выполняет никакой инициализации аппаратуры (типа прерываний и т.п.), а только готовит программное окружение для выполнения си-кода
(инит статитческих/глобальных переменных, памяти, стеков, режимов CPU и т.п.).
Аппаратуру можно начинать инитить уже в main().
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 13:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016