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

 
 
 
Reply to this topicStart new topic
> WinAVR: undefined reference to `__mulhi3'
koluna
сообщение Nov 25 2009, 08:02
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Здравствуйте!

WinAVR 20071221.
CodeBlocks 8.02.

Использую в своём проекте функцию sprintf().
В результате получаю сообщения вида:
Цитата
C:\WinAVR\avr\lib\libprintf_flt.a(vfprintf_flt.o)||In function `vfprintf':(.text+0xd6)||undefined reference to `__mulhi3'
C:\WinAVR\avr\lib\libprintf_flt.a(vfprintf_flt.o)||In function `vfprintf':(.text+0xe8)||undefined reference to `__mulhi3'
C:\WinAVR\avr\lib\libc.a(strtod.o)||In function `strtod':(.text+0x1d8)||undefined reference to `__mulhi3'


Последняя версия WinAVR выдаёт такиеже ошибки.

В чём может быть дело?

Благодарю заранее!

Причём на другой машине с тем же WinAVR и CodeBlocks всё нормально собирается!
Железо виновато или конфликт ПО?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 25 2009, 08:06
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Makefile надо глянуть.
Go to the top of the page
 
+Quote Post
koluna
сообщение Nov 25 2009, 08:20
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Нету его.
C::B его сам на лету делает...
Странно то, что ПО одинаковое и проект один и тот же, но компилируется не на всех машинах...


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 25 2009, 08:31
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Код
-Wl,-u,vfprintf -lprintf_min
-Wl,-u,vfprintf -lprintf_flt

Что из этого в логах печатается?
Вообще, явно дело в ключах линкера

ЗЫ судя по строчке
Цитата
C:\WinAVR\avr\lib\libprintf_flt.a

у Вас должон использоваться -Wl,-u,vfprintf -lprintf_flt т.е. полноплавающий принтф.
Go to the top of the page
 
+Quote Post
koluna
сообщение Nov 25 2009, 08:38
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Где бы ещё посмотреть эти логи...
Не знаю... В том, что выводится на экран вообще никаких ключей нет.


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 25 2009, 08:46
Сообщение #6


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



View/Logs включили панель логов
Правой кнопкой мыши на заголовке окна - выбрать меню Toggle/Build Log
При включенном отображается вкладка - там все нужное должно быть написано. Еще где-то в настройках можно включить генерацию *.htm с логом. Не помню где - у меня другая беда - немогу выключить smile.gif
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 25 2009, 08:47
Сообщение #7


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(n_bogoyavlensky @ Nov 25 2009, 11:38) *
Где бы ещё посмотреть эти логи...

Прикрепленное изображение

В свойствах проекта можно указать, чтобы логи сохранялись в отдельном файле


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
koluna
сообщение Nov 25 2009, 09:19
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(_Pasha @ Nov 25 2009, 11:46) *
View/Logs включили панель логов
Правой кнопкой мыши на заголовке окна - выбрать меню Toggle/Build Log
При включенном отображается вкладка - там все нужное должно быть написано.


Понял. Эти логи я всегда при компиляции включаю по F2 smile.gif
Вот только нету в этих логах вызова компилятора у меня почему-то!
Привожу логи.

Цитата
Еще где-то в настройках можно включить генерацию *.htm с логом. Не помню где - у меня другая беда - немогу выключить smile.gif


Очень интересно, поищем smile.gif
Прикрепленные файлы
Прикрепленный файл  log.txt ( 3.07 килобайт ) Кол-во скачиваний: 177
 


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 25 2009, 09:52
Сообщение #9


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



settings->compiler and debugger settings
->other settings:
compiler logging: full comand line (у вас, по-видимому, стоит task description)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Nov 25 2009, 09:57
Сообщение #10


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



libm.a юзается? Если нет - вполне ожидаемый результат. Скормите ее линкеру
Go to the top of the page
 
+Quote Post
koluna
сообщение Nov 25 2009, 10:22
Сообщение #11


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Цитата(MrYuran @ Nov 25 2009, 12:52) *
settings->compiler and debugger settings
->other settings:
compiler logging: full comand line (у вас, по-видимому, стоит task description)


Именно. Спасибо большое smile.gif
Вот нормальный лог.

И вот что мы видим в логе:
Цитата
-Wl,-u,vfprintf,-lprintf_flt


Цитата(_Pasha @ Nov 25 2009, 12:57) *
libm.a юзается? Если нет - вполне ожидаемый результат. Скормите ее линкеру


Пытаюсь скормить... не принимает...
Вот ключи линкера:
Цитата
-mmcu=atmega1280
-Wl,-Map=$(TARGET_OUTPUT_FILE).map,--cref
-Wl,-u,vfprintf,-lprintf_flt,-llibm.a
-Wl,--section-start,.data=0x802200,--defsym=__heap_end=0x805E00


Раньше вместо -llibm.a было -lm.
Может не надо было его убирать, а добавить отдельной строкой?
Из какой папки нужен libm.a? В WinAVR их несколько, видимо, зависит от платформы...
Кстати, по поводу порядка включения библиотек ключом -l: в каком порядке?

С такими ключами пишет, что не нашёл библиотеку libm.a.

Сообщение отредактировал n_bogoyavlensky - Nov 25 2009, 10:23
Прикрепленные файлы
Прикрепленный файл  app_build_log.html ( 11.31 килобайт ) Кол-во скачиваний: 321
 


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 25 2009, 10:29
Сообщение #12


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(n_bogoyavlensky @ Nov 25 2009, 13:22) *
Раньше вместо -llibm.a было -lm.

правильно как раз -lm, что подразумевает подключение файла библиотеки libm.a
хотя, по-моему, это чистая математика типа sin/cos, ln, x^y и прочая. К принтф никаким боком.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
koluna
сообщение Nov 25 2009, 10:59
Сообщение #13


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Судя по:
Цитата
-LC:\WinAVR\avr\lib

там и ищет...
А зачем тогда дирректории типа \avr?

Цитата(MrYuran @ Nov 25 2009, 13:29) *
правильно как раз -lm, что подразумевает подключение файла библиотеки libm.a
хотя, по-моему, это чистая математика типа sin/cos, ln, x^y и прочая. К принтф никаким боком.


Ну да. Разобрался. -lm как раз подключает libm.a.
Только вот ошибка не исчезла от этого sad.gif((


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Nov 25 2009, 12:44
Сообщение #14


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Очень странно: релизом WinAVR 20060421 у меня наконец-то собрался проект...
Но почему на моей машине не хочет релиз 20071221 работать, а на другой он работает?


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post
koluna
сообщение Nov 25 2009, 14:46
Сообщение #15


Профессионал
*****

Группа: Участник
Сообщений: 1 040
Регистрация: 3-01-07
Пользователь №: 24 061



Бага сидит здесь: avr-g++.exe -LC:\WinAVR\avr\lib
Пофиксил smile.gif

Это была неправильная настройка Code::Blocks...

Причём, очень интересная... Сначала я ставил WinAVR, потом C::B.
C::B автоматически опознал WinAVR и добавил пути себе в параметры компилятора и линкера.
Для линкера путь оказался неправильным!!!


--------------------
Благодарю заранее!
Go to the top of the page
 
+Quote Post

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

 


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


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