|
ошибка li006 |
|
|
|
Aug 9 2011, 10:15
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119

|
Здравствуйте. Столкнулся с проблемой: ругается линкер. Ругань его состоит вот в чем: ******************************************************************************** ****************************** Building configuration: Prog - Bin Updating build tree... 236 file(s) deleted. Updating build tree...
Linking Error[Li006]: duplicate definitions for "LWIP_TASK_STK"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o" Error[Li006]: duplicate definitions for "null_timeouts"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o"
. . .
Error[Li006]: duplicate definitions for "pvNullPointer"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o" Error while running Linker Total number of errors: 100 Total number of warnings: 58 ******************************************************************************** ******************************************** Подскажите, пожалуйста, что бы это значило?
|
|
|
|
|
Aug 9 2011, 10:38
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(MiDV @ Aug 9 2011, 17:15)  Error[Li006]: duplicate definitions for "LWIP_TASK_STK"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o" Error[Li006]: duplicate definitions for "null_timeouts"; in "D:\Project\Bin\Obj\auth.o", and "D:\Project\Bin\Obj\dhcp.o" ... Подскажите, пожалуйста, что бы это значило? А как ещё можно понять написанное? Ведь ясно же сказано, что объявление продублировано в разных файлах, поэтому линкер не знает, какое ему взять, это ошибка. Смотрите, как эти объявления сделаны в указанных файлах. Хинт: смотрите заголовки - возможно, это объявление сделано в заголовочном файле, который включается в эти.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 9 2011, 10:42
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119

|
Извините, вскочило из головы, хотя хотел написать... Все переменные, фигурирующие в данных ошибках, определены только в одном месте, и более нигде. И все эти переменные определены ТОЛЬКО в одном файле. И что интересно, при подключении /отключении этого файла в указанном месте, он (линкер) выдает те же ошибки, только файл .о другой.
Сообщение отредактировал MiDV - Aug 9 2011, 10:50
|
|
|
|
|
Aug 9 2011, 13:36
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(MiDV @ Aug 9 2011, 17:42)  И что интересно, при подключении /отключении этого файла в указанном месте, он (линкер) выдает те же ошибки, только файл .о другой. Это и указывает, что объявление это сделано в заголовочном файле - оно, таким образом, неявно описано во всех исходных файлах, которые #include этот заголовочный файл. А линкер выдаёт всего два файла, потому что для ошибки достаточно уже этого. Уберёте один из них - он предъявит следующий. Ищите в заголовочном файле. Там должны быть только определения и объявления с квалификатором extern. Остальные объявления должны быть в исходных файлах.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Aug 9 2011, 13:47
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119

|
Спасибо за участие. Да, действительно, во всех файлах, где ошибка, присутствует include этого единственного.
|
|
|
|
|
Aug 11 2011, 06:42
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119

|
Еще один вопрос. линкер опять ругается, но только ошибка у него li005: Building configuration: Prog - Bin Updating build tree... . . . Linking Error[Li005]: no definition for "sys_arch_protect" [referenced from D:\Project\Bin\Obj\pbuf.o] Error[Li005]: no definition for "sys_arch_unprotect" [referenced from D:\Project\Bin\Obj\pbuf.o] Error[Li005]: no definition for "sys_arch_sem_wait" [referenced from D:\Project\ Bin\Obj\mem.o] Error[Li005]: no definition for "sys_sem_signal" [referenced from D:\Project\Bin\Obj\mem.o] Error while running Linker Total number of errors: 4 Total number of warnings: 25
Понимаю, что они не объявлены, но как это сделать? При попытке что-то добавить в .h файлы возникает много ругани.Подскажите, из-за чего возникают данные ошибки.Спасибо.
|
|
|
|
|
Aug 11 2011, 07:27
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119

|
кое-что слышал. extern - спецификатор хранения. и я пробовал в pbuf.h sys_arch_protect объявить как extern. линкер выдал ту же ошибку. чтобы было понятнее: я прикручиваю стек LwIP к ucos. инициализация стека проходит без проблем а когда инициализирую ppp - вот такая петрушка получается. и по поводу extern: может я не там объявляю?
|
|
|
|
|
Aug 11 2011, 08:42
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119

|
нет. все эти переменные объявлены нормально. как только я добавляю extern - идут ошибки компилятора, что тип переменной неопределен. если явно задаешь тип - typedef - выдает предупреждение, что данный тип уже объявлен, а линкер все равно указывает на эту же ошибку
Может кто посоветует, где можно найти описание ошибок линкера (юзаю IAR5). Буду премного благодарен. Интересует - чего он вообще хочет, потому что, казалось бы, совсем малюпасенькие действия приводят к непредсказуемой реакции.
|
|
|
|
|
Aug 11 2011, 08:45
|

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

|
Вам линкер говорит Цитата Error[Li005]: no definition... , а Вы: Цитата переменные объявлены нормально Всё-таки - объявлены не нормально, раз выдаёт сообщение об ошибке!
|
|
|
|
|
Aug 11 2011, 08:51
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 7-06-08
Пользователь №: 38 119

|
sys_prot_t sys_arch_protect(void); а перед этим: typedef unsigned long __istate_t; typedef __istate_t sys_prot_t;
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|