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

 
 
> jacOS и WinAVR20060421
Hz!
сообщение Dec 15 2006, 10:40
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Компилирую пример из архива для версии 1.06.0. Создал проектк, указал все дириктории, подключил нужную библиотеку. При компиляции исходники компилятся в объектные файлы, библиотечные функции тоже видятся компилятором, но при генерацыы .elf выдает ошибку
Цитата
avr-gcc.exe -mmcu=atmega8 -Wl,-Map=terminal.map terminal.o uart.o -lD:\Work\terminal\A20ntn -o terminal.elf
D:\Progs\WinAVR\bin\..\lib\gcc\avr\3.4.6\..\..\..\..\avr\bin\ld.exe: cannot find -lD:\Work\terminal\A20ntn
make: *** [terminal.elf] Error 1

Связано ли это с тем, что библиотеки писались под более раннюю версию компилятора и, если да, то как это можно (если можно) обойти не устанавливая еще один компилятор.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 15)
Alex B._
сообщение Dec 15 2006, 10:47
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



тип библиотеки дефайно верно указали (наиболее частая ошибка)?
в прерываниях сервисы используете? если да, то все дефайны определили?
Go to the top of the page
 
+Quote Post
Hz!
сообщение Dec 15 2006, 10:59
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Я взял готовый проект из примера, подключил указанную в примере библиотеку к проекту, указал дериктории. Все, больше ничего не менял.

Сообщение отредактировал Hz! - Dec 15 2006, 11:02
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 15 2006, 12:14
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Hz! @ Dec 15 2006, 11:59) *
... указал дериктории. Все, больше ничего не менял.


Попробуйте заменить \ на /

Анатолий.
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 15 2006, 12:23
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672



Может опять проблема с русскими символами в путях? smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Hz!
сообщение Dec 15 2006, 12:38
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Я указывал пути в GCC-шном плагине для AVRstudio, так что снеклонными проблем быть не должно, он их там сам пишет.
Русских букв, или пробелов в путях нет.

Сообщение отредактировал Hz! - Dec 15 2006, 12:39
Go to the top of the page
 
+Quote Post
µµC
сообщение Dec 15 2006, 12:42
Сообщение #7


Участник
*

Группа: Новичок
Сообщений: 44
Регистрация: 2-05-06
Пользователь №: 16 710



Цитата(Hz! @ Dec 15 2006, 11:40) *
Создал проектк, указал все дириктории, подключил нужную библиотеку.


Там есть .bat файл для компиляции и линковки. Запустите его и он нормально отработает.

Цитата(Hz! @ Dec 15 2006, 11:40) *
avr-gcc.exe -mmcu=atmega8 -Wl,-Map=terminal.map terminal.o uart.o -lD:\Work\terminal\A20ntn -o terminal.elf
D:\Progs\WinAVR\bin\..\lib\gcc\avr\3.4.6\..\..\..\..\avr\bin\ld.exe: cannot find -lD:\Work\terminal\A20ntn


Кстати, для -mmcu=atmega8 нужна библиотека с architecture avr4. A20ntn предназначена для архитектуры avr2. Но не в этом причина ошибки. Тоже попытался создать свой проект в avrstudio и тоже студия (498) не видит библиотеки. Хотя через мейк пример нормально собирается, библиотека линкуется. Это либо глюк студии, либо чегото не так делаю.
Go to the top of the page
 
+Quote Post
aesok
сообщение Dec 15 2006, 13:17
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Цитата(Hz! @ Dec 15 2006, 11:40) *
Цитата

avr-gcc.exe -mmcu=atmega8 -Wl,-Map=terminal.map terminal.o uart.o -lD:\Work\terminal\A20ntn -o terminal.elf
D:\Progs\WinAVR\bin\..\lib\gcc\avr\3.4.6\..\..\..\..\avr\bin\ld.exe: cannot find -lD:\Work\terminal\A20ntn
make: *** [terminal.elf] Error 1




avr-ld --help
...
-l LIBNAME, --library LIBNAME
Search for library LIBNAME
-L DIRECTORY, --library-path DIRECTORY
Add DIRECTORY to library search path

Вы хотите указать линкёру дополнительную директорию для поиска библиотек, и должны использовать -L... вместо -l...

Анатолий.
Go to the top of the page
 
+Quote Post
Hz!
сообщение Dec 15 2006, 14:14
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Цитата
Вы хотите указать линкёру дополнительную директорию для поиска библиотек, и должны использовать -L... вместо -l...

Анатолий.

здесь
Цитата
avr-gcc.exe -mmcu=atmega8 -Wl,-Map=terminal.map terminal.o uart.o -lD:\Work\terminal\A20ntn -o terminal.elf
D:\Progs\WinAVR\bin\..\lib\gcc\avr\3.4.6\..\..\..\..\avr\bin\ld.exe: cannot find -lD:\Work\terminal\A20ntn
make: *** [terminal.elf] Error 1

какра-то и указана библиотека, просто полным адресом, причем указывание расширения ничего не меняет. Попробывал с помощью директорий - результат такой же
Цитата
avr-gcc.exe -mmcu=atmega8 --output --cref -Wl,-Map=terminal.map terminal.o uart.o -L"D:\Kolya\Work\terminal\jacOS" -lA40ntn -o terminal.elf
d:\Progs\WinAVR\bin\..\lib\gcc\avr\3.4.6\..\..\..\..\avr\bin\ld.exe: cannot find -lA40ntn
make: *** [terminal.elf] Error 1
Build failed with 1 errors and 0 warnings...


Сообщение отредактировал Hz! - Dec 15 2006, 14:15
Go to the top of the page
 
+Quote Post
Hz!
сообщение Dec 15 2006, 14:28
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Цитата(µµC @ Dec 15 2006, 12:42) *
Кстати, для -mmcu=atmega8 нужна библиотека с architecture avr4. A20ntn предназначена для архитектуры avr2. Но не в этом причина ошибки. Тоже попытался создать свой проект в avrstudio и тоже студия (498) не видит библиотеки. Хотя через мейк пример нормально собирается, библиотека линкуется. Это либо глюк студии, либо чегото не так делаю.


A20ntn я поменял, спасибо, что обратили внимание.
Готовый мейк у меня тоже запустился. Похоже придется переписать его под себя и довольствоваться этим, пока не найдется решение.
Go to the top of the page
 
+Quote Post
Hz!
сообщение Dec 15 2006, 16:18
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Разобрался.
Фишка в том, что для того, чтобы библиотека работала правильно перед ней не должно быть ключа -l. Почему так сделано - не понятно, но это факт, а поскольку GCC-ный плагин все делает сам, втом числе и ключи ставит, то получается jacOS и AVRstudio можно связать только через внешний makefile.
Go to the top of the page
 
+Quote Post
altlogic
сообщение Jan 5 2008, 04:44
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 2-12-06
Из: г. Хабаровск
Пользователь №: 23 035



Недавно взялся за jacOS. Столкнулся всё с теми же проблемами. Сделал свой мэйк, вернее убрал опцию l из генерируемого студией мэйкфайлаsmile.gif И всё равно ошибки при сборке:
undefind reference to OS_Cooperate_
Как исправить ошибку?

Заранее благодарен


--------------------
С уважением, Вячеслав
Go to the top of the page
 
+Quote Post
Hz!
сообщение Jan 5 2008, 11:07
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-05-06
Из: Минск
Пользователь №: 16 792



Цитата(Clavyan @ Jan 5 2008, 06:44) *
Недавно взялся за jacOS. Столкнулся всё с теми же проблемами. Сделал свой мэйк, вернее убрал опцию l из генерируемого студией мэйкфайлаsmile.gif И всё равно ошибки при сборке:
undefind reference to OS_Cooperate_
Как исправить ошибку?

Заранее благодарен

Это у вас уже другие грабли.
Посмотрите внимательнее, наверное вы какой-то хедер не подключили.
Go to the top of the page
 
+Quote Post
Maddy
сообщение Jan 5 2008, 14:40
Сообщение #14


Участник
*

Группа: Validating
Сообщений: 56
Регистрация: 15-10-06
Пользователь №: 21 335



Цитата(Hz! @ Jan 5 2008, 14:07) *
Это у вас уже другие грабли.
Посмотрите внимательнее, наверное вы какой-то хедер не подключили.

А можно дурацкий вопрос - "undefind reference to XXXX" обычно выдает линкер (ld в частности) и как хедер может ему помочь ? (мелкомягкие расширения прагмы не поминать) IMHO скорее или объектник забыли добавить или библиотеку хде оно (в данном случае OS_Cooperate_ живет)
Go to the top of the page
 
+Quote Post
altlogic
сообщение Jan 7 2008, 01:41
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 2-12-06
Из: г. Хабаровск
Пользователь №: 23 035



Цитата(Maddy @ Jan 6 2008, 00:40) *
А можно дурацкий вопрос - "undefind reference to XXXX" обычно выдает линкер (ld в частности) и как хедер может ему помочь ? (мелкомягкие расширения прагмы не поминать) IMHO скорее или объектник забыли добавить или библиотеку хде оно (в данном случае OS_Cooperate_ живет)


Спасибо, за помощь. Оказалось в мэйк файле я неправильно линковал библиотеку с функциями ОС. В итоге доработал поставляемый в примере мэйк под себя. Добавил ещё несколько модулей для компиляции и всё заработало! А хедер и впрямь не причём оказался.


--------------------
С уважением, Вячеслав
Go to the top of the page
 
+Quote Post
DDK_EL
сообщение Nov 21 2009, 11:50
Сообщение #16





Группа: Новичок
Сообщений: 1
Регистрация: 20-11-09
Из: Петропавловск-Камчатский
Пользователь №: 53 745



Цитата(Hz! @ Dec 15 2006, 13:40) *
Компилирую пример из архива для версии 1.06.0. Создал проектк, указал все дириктории, подключил нужную библиотеку. При компиляции исходники компилятся в объектные файлы, библиотечные функции тоже видятся компилятором, но при генерацыы .elf выдает ошибку

Связано ли это с тем, что библиотеки писались под более раннюю версию компилятора и, если да, то как это можно (если можно) обойти не устанавливая еще один компилятор.


При использовании опции -l компилятор автоматически добавляет к имени библиотеки префикс lib и суффикс .a Я просто переименовал нужные библиотеки, добавив префикс lib, и подключил уже эти библиотеки.
Go to the top of the page
 
+Quote Post

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

 


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


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