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

 
 
> Ошибка сборки проекта в 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
Ответов
Genadi Zawidowsk...
сообщение Aug 3 2014, 16:43
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Ну так библиотек никаких не указано... Обычно в embedded проектах "стартап" включается в него разработчиком. Я, например, предпочитаю чтобы для основной программы неинициализированные переменные уже были "0", это всё (как и работала инициализация - переписывается из flash в ОЗУ) само собой не происходит.

Как-то так:

Код
void ResetException(void)
{
    arm_cpu_initialize();        // watchdog disable, clock initialize

     /* copy-init variables */
    memcpy(& __data_start__, & __etext, (& __data_end__ - & __data_start__) * sizeof __bss_end__);
    /* zero-init variables */
    memset(& __bss_start__, 0, (& __bss_end__ - & __bss_start__) * sizeof __bss_end__);
    /* Branch to main function */
    main();

    /* Infinite loop */
    for (;;)
;
}


Для Вашего случая лекарство вот:

Код
void _exit(int v)
{
        for (;;)
               ;
}

void exit(int v)
{
        for (;;)
               ;
}


Но зашивать в ПЗУ это не получится...

Сообщение отредактировал Genadi Zawidowski - Aug 3 2014, 16:50
Go to the top of the page
 
+Quote Post
allsettingsdone
сообщение Aug 3 2014, 17:21
Сообщение #3


Участник
*

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



Цитата(Genadi Zawidowski @ Aug 3 2014, 18:43) *
...

Дело в том что не нужны костыли в проекте, для того что бы та или иная ошибка не выскакивала. Я бы хотел сделать "скелетный" проект для Sublime text2, и насколько я понимаю, эта ошибка появляется из-за того что я передаю в компилятор слишком мало параметров о самом микроконтроллере, и(или) не подключаю к проекту файл "startup_stm32f10x_md_vl.s". Тут кстати возникает вопрос - как правильно подключить этот файл к проекту? И какая разница компилятору подключен он или нет?

Сообщение отредактировал IgorKossak - Aug 4 2014, 08:44
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:02
Рейтинг@Mail.ru


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