|
undefined reference to `_exit', Это уже было... |
|
|
|
 |
Ответов
|
Feb 13 2013, 03:49
|
Группа: Участник
Сообщений: 10
Регистрация: 10-02-13
Пользователь №: 75 568

|
Вот, map файл: http://yadi.sk/d/po6sankd2_2yQ
Сообщение отредактировал ajkpro - Feb 13 2013, 03:50
|
|
|
|
|
Feb 14 2013, 14:58
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(ajkpro @ Feb 13 2013, 09:49)  Короче, дело в следующем. 1. sys.c - забудьте про него, это совсем из другой оперы. 2. В вашем проекте почему-то вместо файла stm32_lib/device_support/gcc/startup_stm32f10x_md_vl.S используется файл начальной инициализации, предоставляемый компилятором по умолчанию. И он зачем-то вызывает _exit(). Это может быть действительно глюк компилятора. 3. Если вас это устраивает, просто добавьте в файл main.c функцию Код void _exit(int i) { while (1); } А вообще, тот шаблон, который вы себе выбрали для старта - не очень удачный. Видите, сколько возни для того, чтобы просто скомпилировать его. Лучше возьмите другой шаблон, где всё сразу сделано нормально. Например, вот отсюда.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Feb 14 2013, 17:21
|
Группа: Участник
Сообщений: 10
Регистрация: 10-02-13
Пользователь №: 75 568

|
Йесс! Поехало, спасибо! В выходные буду разбираться, сейчас на работе облом. Там у меня немного другое.
А может быть найдется ссылка на проект с stm32f4diskovery? Все-равно мне потом туда переползать.
А мар я распечатал, 13 листов. Обчитаешься!
Спасибо! Александр.
|
|
|
|
|
Feb 15 2013, 03:47
|
Группа: Участник
Сообщений: 10
Регистрация: 10-02-13
Пользователь №: 75 568

|
Цитата(AHTOXA @ Feb 14 2013, 21:45)  А какой вариант у вас "поехал"? Добавил: Код void _exit(int i) { while (1); } Но теперь не понятно, почему ругается на _exit, добавил функцию _exit (естественно), но в map`е находим (exit),т.е. без подчерркивания? Это что-то обозначает? Есть где-нибудь русские комментарии к map? Александр. p.s. По английски в следующем сезоне  Цитата(alx2 @ Feb 14 2013, 09:44)  А дальше Вы будете разбираться, почему в Вашем crt0.o есть ссылка на exit, которой, как Вы считаете, там быть не должно... А нет у меня crt0, ни в проекте, ни в компилляторе. Точнее, нет такого файла. А в проекте даже это слово содержится только в map`е. Но в компиляторе crt0 встречается в 120 файлах... Или какие-то опции компиляции не корректно, или чего-то не понимаю. Александр
Сообщение отредактировал IgorKossak - Feb 15 2013, 09:05
Причина редактирования: лишние пробельные строки
|
|
|
|
|
Feb 18 2013, 04:48
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(ajkpro @ Feb 15 2013, 08:47)  Но теперь не понятно, почему ругается на _exit, Кто на него ругается и как именно? Если Вы имеете в виду сообщение об ошибке, процитированное в первом посте темы, то оно возникает из-за того что в функции exit() есть ссылка на символ _exit (проще говоря, exit() вызывает _exit()), которого линкер не смог найти. Подробности ищите в документации на используемую Вами библиотеку - там наверняка сказано, что если программист использует exit(), то он должен предоставить функцию _exit(). Цитата(ajkpro @ Feb 15 2013, 08:47)  добавил функцию _exit (естественно), но в map`е находим (exit),т.е. без подчерркивания? Это что-то обозначает? Есть где-нибудь русские комментарии к map? Это означает, что в Вашей программе используется функция exit(). Вызывается она, как я Вам уже говорил, в crt0.o. Какие еще комментарии Вы хотите услышать? Задайте конкретные вопросы, я постараюсь (в меру своего понимания) ответить... Цитата(ajkpro @ Feb 15 2013, 08:47)  А нет у меня crt0, ни в проекте, ни в компилляторе. Точнее, нет такого файла. Как это нет? Покажите вывод команды ls -l /home/ajk/stm32/gcc-arm-none-eabi-4_7-2012q4/arm-none-eabi/lib/armv7-m/crt0.oЦитата(ajkpro @ Feb 15 2013, 08:47)  Но в компиляторе crt0 встречается в 120 файлах... Или какие-то опции компиляции не корректно, или чего-то не понимаю. Вы чего-то не понимаете. Судя по названию, это Ваш стартап-модуль. Иными словами, это модуль, содержащий код, выполняющийся при старте контроллера (после RESET), и, как правило, содержащий инициализацию среды (инициализацию указателя(ей) стека, секции .data, очистку .bss, выполнение конструкторов глобальных объектов и т.п.), и после этого вызывает main(). А после вызова main() у Вас там, видимо, и вызывается exit(). Если Вы знаете, что main() никогда не вернет управление, просто уберите весь код после вызова main(), так как он все равно не будет выполняться.
Сообщение отредактировал alx2 - Feb 18 2013, 04:51
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
Сообщений в этой теме
ajkpro undefined reference to `_exit' Feb 10 2013, 17:19 AHTOXA Цитата(ajkpro @ Feb 10 2013, 23:19) Это я... Feb 10 2013, 18:48 ajkpro Цитата(AHTOXA @ Feb 10 2013, 22:48) Потом... Feb 11 2013, 17:36  AHTOXA Цитата(ajkpro @ Feb 11 2013, 23:36) А там... Feb 11 2013, 20:05   ajkpro Цитата(AHTOXA @ Feb 12 2013, 00:05) Но, м... Feb 12 2013, 03:25    AHTOXA Цитата(ajkpro @ Feb 12 2013, 09:25) По ка... Feb 12 2013, 04:35   alx2 Цитата(AHTOXA @ Feb 12 2013, 01:05) Может... Feb 12 2013, 05:54    ajkpro Вот, main.c:Код#include "stm32f10x.h"
voi... Feb 12 2013, 17:43     xemul Кодvoid main(void) {
...
while (1... Feb 13 2013, 09:15      ajkpro Цитата(xemul @ Feb 13 2013, 13:15) Кодvoi... Feb 13 2013, 16:39       xemul Цитата(ajkpro @ Feb 13 2013, 20:39) Ну, ц... Feb 13 2013, 17:54        ajkpro Цитата(xemul @ Feb 13 2013, 21:54) Может ... Feb 13 2013, 18:42     alx2 Цитата(ajkpro @ Feb 12 2013, 22:43) Увы, ... Feb 14 2013, 05:44     _Pasha Цитата(ajkpro @ Feb 15 2013, 06:47) А нет... Feb 15 2013, 04:02      AHTOXA Цитата(_Pasha @ Feb 15 2013, 10:02) Опция... Feb 15 2013, 04:25       ajkpro Цитата(AHTOXA @ Feb 15 2013, 08:25) Вроде... Feb 16 2013, 07:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|