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

 
 
> Как использовать библиотечную функцию в WinAVR?
AVRdeveloper
сообщение Apr 14 2008, 11:41
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 8-02-08
Пользователь №: 34 857



Здравствуйте, у меня возникла проблема с освоением WINAVR. При попытке использовать библиотечные функции из Procyon AVRlib Version 20061029 студия ругается. А именно, при использовании функции uartInit(); или еще какой то из того же пакета происходит ошибка:

" C:\WinAVR-20071221\Uart\default/../s_uart.c:7: undefined reference to `uartInit' ".

(gcc ver.20071221)
Листинг:
#include <avr/io.h>
#include <avr/interrupt.h>
#include "buffer.h"
#include "uart.h"

int main ()
{
uartInit();
return 0;
}

Хедеры, которые определены в сорцах, я так же скопировал в каталог с моим исходником.
Что я не так делаю? Кто-то ведь использовал эту библиотеку, подскажите, буду благодарен за простой пример вроде "Hello, world!" с использованием библиотечных функций. smile3046.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Steel_monkey
сообщение Apr 28 2008, 20:53
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 12-05-07
Из: Северная Венеция
Пользователь №: 27 684



Спасибо! Я использую чистый WinAVR с Programmer Notepad'ом.
Мне в Мэйк надо дописать в раздел опций Си компилятора
CFLAGS += -ffunction-sections
CFLAGS += -fdata-sections

В разделе опций линкера
LDFLAGS +=-gc-sections

Я прав?
(жуть, это китайский?)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 28 2008, 21:20
Сообщение #3


Гуру
******

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



Цитата(Steel_monkey @ Apr 28 2008, 23:53) *
Я прав?
С CFLAGS - абсолютно. С LDFLAGS - если у вас линковка делается вызовом $(LD), то прав. Если вызовом $(CC), то LDFLAGS += -Wl,--gc-sections. В качестве бонуса можете добавить еще -Wl,--relax -тоже может немного уменьшить код.

P.S. обратите внимание - опция --gc-sections начинается с двух минусов.

Цитата(aesok @ Apr 29 2008, 00:09) *
Маленький совет: НИКОГДА не делайте #include для .с файлов, а добавляйте их в переменую SRC в Makefile.
Оппа... Этого я не заметил. Двумя руками поддерживаю.


--------------------
На любой вопрос даю любой ответ
"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 Текстовая версия Сейчас: 22nd June 2025 - 15:04
Рейтинг@Mail.ru


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