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

 
 
 
Reply to this topicStart new topic
> mspgcc линковка libm.a, помогите! нервы покидают меня!
MrYuran
сообщение Apr 22 2008, 15:03
Сообщение #1


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

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



Суть проблемы в следующем.
Нужно прилинковать к проекту библиотеку libm.a
Работаю в Eclipse + ZilinCDT
обычно в проекте стоит автомэйк, в свойствах проекта указываю путь к библиотеке и ключ линкера -lm.
Всё ок, не считая что вместо log() почему-то прокатывает только logf().
В проекте scmRTOS (AHTOXA@ mspgcc Edition) такой номер не проходит, автомэйком он не собирается, только мэйк-файлом из scmRTOS.
ТАК ВОТ: немогу никак подключить libm.a к этому мэйку!
никак не подключается!
уж как только не пробовал!
То путь не найден (непонятно до чего), то log() андефайнед

PS: хотел файл прикрепить, а он не хочет чего-то

обозвал txt, прикрепился: Прикрепленный файл  makefile.txt ( 3.03 килобайт ) Кол-во скачиваний: 201


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 22 2008, 16:32
Сообщение #2


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

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



Я вот что ещё подумал - в math.h стоит #ifndef _чё_то_там_ перед каждым блоком фунцкий, а определения дефайнов непонятно где. Может здесь собака повалялась?

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


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 23 2008, 05:29
Сообщение #3


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

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



Ещё вот такая штука
Прикрепленное изображение

Чё там за голубые галочки (пометил стрелками)
раньше их вроде не было


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Apr 23 2008, 05:29
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Попробуйте явно задать пути к библиотекам линкеру:
Код
ldflags += -Wl,-L"C:\mspgcc\msp430\lib"

Примерно так, только убедитесь в правильности пути
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 23 2008, 06:34
Сообщение #5


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

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



Ну вот блин... допрыгался.
Чё-то отломил.
теперь и без логарифма не работает.
Код
**** Build of configuration Release for project scmRTOSproba ****

make -k -j1
--- compiling ../Measure/measure.cpp...
../Measure/measure.cpp: In function `float ChargeCap()':
../Measure/measure.cpp:130: warning: unused variable `float i'
../Measure/measure.cpp: At top level:
../Measure/measure.cpp:63: warning: `float Delta' defined but not used
--- linking...
msp430-ld: region text is full (../exe/scmrtos-1-EventFlag.elf section .text)
msp430-ld: region data is full (../exe/scmrtos-1-EventFlag.elf section .data)
msp430-ld: address 0x55e of ../exe/scmrtos-1-EventFlag.elf section .bss is not within region data
make: *** [../exe/scmrtos-1-EventFlag.elf] Error 1
make: Target `all' not remade because of errors.


Вроде восстановил, но log и logf категорически не приемлет:
Код
ldflags     := -mmcu=$(cpu)-Wl,-L"C:\mspgcc\msp430\lib\msp1"-lm
ldflags        += -Wl,-Map=$(mapfile),--cref -Wl,-T$(cfg_dir)/msp430x149.x

кстати, зачем нужен ключ -Wl ? изменение порядка ключей вызывает секшн оверлэп
Код
make -k -j1
--- linking...
../debug/measure.o: In function `CapMeas()':
/cygdrive/e/work/.../Project/scmRTOSproba/1-EventFlag/../Measure/measure.cpp:179: undefined reference to `logf'
make: *** [../exe/scmrtos-1-EventFlag.elf] Error 1
make: Target `all' not remade because of errors.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Apr 23 2008, 06:40
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(MrYuran @ Apr 23 2008, 09:34) *
кстати, зачем нужен ключ -Wl ? изменение порядка ключей вызывает секшн оверлэп
Код
make -k -j1
--- linking...
../debug/measure.o: In function `CapMeas()':
/cygdrive/e/work/.../Project/scmRTOSproba/1-EventFlag/../Measure/measure.cpp:179: undefined reference to `logf'
make: *** [../exe/scmrtos-1-EventFlag.elf] Error 1
make: Target `all' not remade because of errors.
При испоьзовании gcc для вызова линкера, параметры линкера передаются через конструкцию вида
Код
-Wl,<linkerflag>
, ассемблеру
Код
-Wa,<assflag>
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 23 2008, 07:17
Сообщение #7


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

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



math.h тоже похоже ни при чём,
объявляю в явном виде
extern float logf _PARAMS((float));
- результат не меняется

А может быть разница из-за того что С++ всесто С?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Apr 23 2008, 07:24
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(MrYuran @ Apr 23 2008, 10:17) *
math.h тоже похоже ни при чём,
объявляю в явном виде
extern float logf _PARAMS((float));
- результат не меняется

А может быть разница из-за того что С++ всесто С?

При использовании в С++, функции С должны быть обьявлены
Код
extern "C" {
// тут обьявление функций
}
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 23 2008, 07:43
Сообщение #9


Гуру
******

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



Цитата(MrYuran @ Apr 23 2008, 09:34) *
Код
ldflags     := -mmcu=$(cpu)-Wl,-L"C:\mspgcc\msp430\lib\msp1"-lm
ldflags        += -Wl,-Map=$(mapfile),--cref -Wl,-T$(cfg_dir)/msp430x149.x
В первой строчке необходим пробел после $(cpu) и запятая или конструкция "-Wlзапятая" перед -lm


--------------------
На любой вопрос даю любой ответ
"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
MrYuran
сообщение Apr 23 2008, 07:52
Сообщение #10


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

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



Цитата(Сергей Борщ @ Apr 23 2008, 10:43) *
В первой строчке необходим пробел после $(cpu) и запятая или конструкция "-Wlзапятая" перед -lm

Да уж как только не менял... и местами, и запятые, и пробелы...
Проще по-моему нацти исходник логарифма и вставить в программу.
Кстати о птичках: может есть у кого?
Да , и ещё pow (возведение в степень)


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
msalov
сообщение Apr 23 2008, 08:00
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 24-08-07
Из: Беларусь, Минск
Пользователь №: 30 045



Цитата(MrYuran @ Apr 23 2008, 10:52) *
Да уж как только не менял... и местами, и запятые, и пробелы...
Проще по-моему нацти исходник логарифма и вставить в программу.
Кстати о птичках: может есть у кого?
Да , и ещё pow (возведение в степень)

log: http://mspgcc.cvs.sourceforge.net/mspgcc/m...amp;view=markup
pow: http://mspgcc.cvs.sourceforge.net/mspgcc/m...amp;view=markup
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 23 2008, 08:24
Сообщение #12


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

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



Во, совсем другое дело!
Код
--- linking...
--- making hex...
--- generating listing...
   text       data        bss        dec        hex    filename
  13394        790         72      14256       37b0    ../exe/scmrtos-1-EventFlag.elf
"Errors: none"

И как я раньше не додумался...
Тормоз, одним словом
Цитата

Спасибо!!! beer.gif beer.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 10:53
Рейтинг@Mail.ru


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