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

 
 
> undefined reference to `_exit', Это уже было...
ajkpro
сообщение Feb 10 2013, 17:19
Сообщение #1





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



Это уже былоhttp://electronix.ru/forum/index.php?showtopic=99348, но там я не "дошел".
Это мой первый опыт, поэтому задаю еще раз.
Вот есть проект https://github.com/h0rr0rrdrag0n/stm32vldis...-linux-template
Вот, автор с описанием этого проекта: http://h0rr0rr-drag0n.blogspot.ru/2011/08/...inux-linux.html

Вот, такая ошибка:
Цитата
rmv7-m/libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text.exit+0x16): undefined reference to `_exit'
collect2: error: ld returned 1 exit status
make: *** [ldall] Ошибка 1


Это я уже понял, что некий деструктор не подхватывается. Но почему у автора и некоторых последователей прошло. Там рекомендуют sys.c, но его нет по ссылке. И другой компилятор сам устраняет проблему.
Как все-таки победить?

Спасибо! Александр.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Feb 10 2013, 18:48
Сообщение #2


фанат дивана
******

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



Цитата(ajkpro @ Feb 10 2013, 23:19) *
Это я уже понял, что некий деструктор не подхватывается. Но почему у автора и некоторых последователей прошло.

Потому что автор и последователи убрали деструкторы.
Цитата(ajkpro @ Feb 10 2013, 23:19) *
Там рекомендуют sys.c, но его нет по ссылке.

Вот вам новая ссылка.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
ajkpro
сообщение Feb 11 2013, 17:36
Сообщение #3





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



Цитата(AHTOXA @ Feb 10 2013, 22:48) *
Потому что автор и последователи убрали деструкторы.

А там некий траслятор это дело игнорирует - тут

Тем не менее...
Цитата(AHTOXA @ Feb 10 2013, 22:48) *

как его прикрутить? Пока фантазии не хватает...

Вот, то что подчеркнуто это я добавил:

cc: $(SRC)
$(CC) $(CFLAGS) $(SRC) ./sys.c
Естественно, ничего не вышло:
Цитата
/home/ajk/stm32/gcc-arm-none-eabi-4_7-2012q4/bin/../lib/gcc/arm-none-eabi/4.7.3/../../../../arm-none-eabi/lib/armv7-m/libc.a(lib_a-exit.o): In function `exit':
exit.c:(.text.exit+0x16): undefined reference to `_exit'
collect2: error: ld returned 1 exit status
make: *** [ldall] Ошибка 1


Но, с другой стороны в его коде и нет деструкторов: _exit

Ну, и весь make:
CODE
BIN=stm32vldiscovery-linux-template

TOOLS_PATH=/home/ajk/stm32/gcc-arm-none-eabi-4_7-2012q4
TOOLS_PREFIX=arm-none-eabi-
TOOLS_VERSION=4.7.3

CFLAGS=-c -mcpu=cortex-m3 -mthumb -Wall -O0 -mapcs-frame -D__thumb2__=1
CFLAGS+=-msoft-float -gdwarf-2 -mno-sched-prolog -fno-hosted -mtune=cortex-m3
CFLAGS+=-march=armv7-m -mfix-cortex-m3-ldrd -ffunction-sections -fdata-sections
CFLAGS+=-I./cmsis -I./stm32_lib -I.
ASFLAGS=-mcpu=cortex-m3 -I./cmsis -I./stm32_lib -gdwarf-2 -gdwarf-2
LDFLAGS=-static -mcpu=cortex-m3 -mthumb -mthumb-interwork -Wl,--start-group
LDFLAGS+=-L$(TOOLS_PATH)/lib/gcc/arm-none-eabi/$(TOOLS_VERSION)/thumb2
LDFLAGS+=-L$(TOOLS_PATH)/arm-none-eabi/lib/thumb2 -lc -lg -lstdc++ -lsupc++ -lgcc -lm
#LDFLAGS+=--section-start=.text=0x8000000
LDFLAGS+=-Wl,--end-group -Xlinker -Map -Xlinker $(BIN).map -Xlinker
LDFLAGS+=-T ./stm32_lib/device_support/gcc/stm32f100rb_flash.ld -o $(BIN).elf

CC=$(TOOLS_PATH)/bin/$(TOOLS_PREFIX)gcc-$(TOOLS_VERSION)
AS=$(TOOLS_PATH)/bin/$(TOOLS_PREFIX)as
SIZE=$(TOOLS_PATH)/bin/$(TOOLS_PREFIX)size

CMSISSRC=./cmsis/core_cm3.c
STM32_LIBSRC=./stm32_lib/system_stm32f10x.c ./stm32_lib/stm32f10x_it.c
STM32_LIBSRC+=./stm32_lib/stm32f10x_rcc.c ./stm32_lib/stm32f10x_gpio.c
SRC=main.c

OBJ=core_cm3.o system_stm32f10x.o stm32f10x_it.o startup_stm32f10x_md_vl.o
OBJ+=stm32f10x_rcc.o stm32f10x_gpio.o
OBJ+=main.o

all: ccmsis cstm32_lib cc ldall
$(SIZE) -B $(BIN).elf

ccmsis: $(CMSISSRC)
$(CC) $(CFLAGS) $(CMSISSRC)

cstm32_lib: $(STM32_LIBSRC)
$(CC) $(CFLAGS) $(STM32_LIBSRC)
$(AS) $(ASFLAGS) ./stm32_lib/device_support/gcc/startup_stm32f10x_md_vl.S -o startup_stm32f10x_md_vl.o

cc: $(SRC)
$(CC) $(CFLAGS) $(SRC) ./sys.c

ldall:
$(CC) $(OBJ) $(LDFLAGS)

.PHONY: clean load

clean:
rm -f $(OBJ) \
$(BIN).map \
$(BIN).elf
make clean -C ./stlink/build/

load: $(BIN).elf
./flashing_stm32vldiscovery.sh $(BIN).elf


Сообщение отредактировал IgorKossak - Feb 11 2013, 19:53
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 11 2013, 20:05
Сообщение #4


фанат дивана
******

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



Цитата(ajkpro @ Feb 11 2013, 23:36) *
А там некий траслятор это дело игнорирует - тут

"Там" деструкторов сразу не было. Просто более старые версии компилятора подтягивали исключения не только при наличии деструкторов, но и просто при наличии чисто виртуальных функций. sys.c от этого помогал.
Но, может быть, у вас вообще другая проблема? Судя по makefile, у вас проект не на c++, а на c, а там нет деструкторов.
Может быть, вы просто добавили в main.c вызов функции printf()?
Или ещё проще - у вас нет в конце main() бесконечного цикла, и программа завершает работу? (как раз при этом вызывается функция exit() )


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ajkpro   undefined reference to `_exit'   Feb 10 2013, 17:19
|- - 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
- - ajkpro   Вот, map файл: http://yadi.sk/d/po6sankd2_2yQ   Feb 13 2013, 03:49
- - AHTOXA   Цитата(ajkpro @ Feb 13 2013, 09:49) Вот, ...   Feb 14 2013, 14:58
- - ajkpro   Йесс! Поехало, спасибо! В выходные буду ра...   Feb 14 2013, 17:21
- - AHTOXA   А какой вариант у вас "поехал"?   Feb 14 2013, 17:45
- - ajkpro   Цитата(AHTOXA @ Feb 14 2013, 21:45) А как...   Feb 15 2013, 03:47
- - _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
- - alx2   Цитата(ajkpro @ Feb 15 2013, 08:47) Но те...   Feb 18 2013, 04:48


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

 


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


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