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

 
 
> Компиляция WinAVR
Aesthete Animus
сообщение Dec 11 2007, 13:48
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Поясните, что я делаю (или понимаю) неправильно. Компилирую и линкую проект следующим образом:
Код
del *.elf
del *.bin
del *.hex
del *.obj
del *.map
del *.o
del *.lst
del *.eep



avr-gcc -g -Os -mmcu=atmega8 -c lib\utils.c
avr-gcc -g -Os -mmcu=atmega8 -c lib\uart.c

avr-gcc -g -Os -mmcu=atmega8 -c main.c

avr-gcc -g -mmcu=atmega8 -o main.elf main.o uart.o utils.o


avr-objcopy -O ihex main.elf main.hex


Если в каком-то из файлов, например в utils.h, есть функция, которая нигде не вызывается, то все равно, она линкуется в прошивку. Как сделать, что бы скомпилирован и слинкован был только тот код, который действительно будет выполняться?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Dec 11 2007, 15:13
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Дать компилятору ключ -ffunction-sections (--fdata-sections аналогично для данных), а линкеру - -gc-sections:
Код
CFLAGS += -ffunction-sections
CFLAGS += -fdata-sections

LDFLAGS += -Wl,--gc-sections


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


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


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