|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 35)
|
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;
|
|
|
|
|
Aug 11 2011, 08:56
|
Участник

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

|
А раз выдает сообщение - то что-то на так. А чтобы разобраться - надо почитать. Просто стек уже в готовом виде, компилится без ошибок, а как начинаешь инициализировать - тут и возникают непонятки...
|
|
|
|
|
Aug 11 2011, 08:58
|
Участник

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

|
не. с англицким все путем. просто как достучаться до этого файла, на который ссылка?
|
|
|
|
|
Aug 11 2011, 09:04
|
Участник

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

|
sys_prot_t sys_arch_protect(void) { sys_prot_t Ret = __get_interrupt_state(); __disable_interrupt(); return(Ret); } это определение из файла aaa.c
sys_prot_t sys_arch_protect(void); - это из файла aaa.h #include aaa.h - это из файла bbb.c, в котором я подключаю функцию инициализации. А линкер ругается на файл, который я вообще не трогаю. Я знаю, что дело не в бобине, но не хватает знания, где мой про..б?
|
|
|
|
|
Aug 11 2011, 09:20
|
Участник

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

|
да. включен. он присутствует в списке билдера.
Причем, если поискать по проекту sys_arch_protect - то он фигурирует только в двух файлах - aaa.c и aaa.h Ни о каком файле, на который ссылается линкер и речи не идет
|
|
|
|
|
Aug 11 2011, 09:39
|
Участник

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

|
эта опция у меня и стоит. но все равно...
|
|
|
|
|
Aug 11 2011, 10:06
|
Участник

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

|
Наверное, нашел в чем дело: в aaa.c есть строчка #define SYS_ARCH_PROTECT(lev) lev = sys_arch_protect() а в том, на который ругается линкер, есть SYS_ARCH_DECL_PROTECT(old_level); но опять, же aaa.h подключен.
|
|
|
|
|
Aug 12 2011, 08:26
|
Участник

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

|
Я уже не знаю как бороться... Подскажите, кто может. Есть проект. Он компилится нормально и нормально работает в девайсе. Добавляю в файле bbb.c функцию aaa(); которая прописана в файле aaa.c и aaa.h Добавляю в файл bbb.с #include aaa.h идет ошибка линкера li005:Error[Li005]: no definition for "aaa" [referenced from D:\Project\Bin\Obj\bbb.o] Дописываю в aaa.h строку "#define aaa()" и все становится нормально. Почему? Откуда ноги растут???
Сообщение отредактировал MiDV - Aug 12 2011, 08:29
|
|
|
|
|
Aug 12 2011, 08:33
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (MiDV @ Aug 12 2011, 11:26)  Почему? Потому, что Вы не ведаете, что творите и не видите, что пишите  . Посему все Ваши слова описывающие ситуацию просто дезинформация. Если выложите проект, то исправить "проблему" видя то, что Вы РЕАЛЬНО написали, секундное дело.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 12 2011, 08:35
|
Участник

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

|
Или еще такая же ситуация, только функция определена в хидере так: #ifndef aaa u32_t aaa(void); #endif А тут уж дописывай что хошь - не помогает... Как побороть?
не вопрос. Что именно Вам надо?
|
|
|
|
|
Aug 12 2011, 09:51
|
Участник

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

|
Прикрепил упакованный проект. в файле LwIP.c идет вызов pppInit(); Линкер выдает 3 ошибки li005.
Сообщение отредактировал MiDV - Aug 12 2011, 09:51
|
|
|
|
|
Aug 12 2011, 10:43
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Я конечно дико извиняюсь, но Вам надо начинать с помигать светодиодом и чтения букварей  . Операционки и Стеки много позже.... 1. Если по честному то у Вас в так называемом "проекте" не 3 ошибки а 224 и 30 предупреждений. Total number of errors: 224 Из-за конфликтов в дважды включенных хидерах идущих в комплекте с компилятором и зачем-то еще в комплекте с операционкой. Причем с операционкой старые в комплекте. Total number of warnings: 30 Нет прототипов для некоторых библиотечных функций и лишние переменные 2. Те три ошибки, которые Вас особо взволновали, это совершенно законные ошибки, поскольку вот этих трех функций Error[Li005]: no definition for "sys_jiffies" [referenced from D:\WORK_ARM\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\Debug\Obj\ppp.o] Error[Li005]: no definition for "sio_write" [referenced from D:\WORK_ARM\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\Debug\Obj\ppp.o] Error[Li005]: no definition for "sio_read_abort" [referenced from D:\WORK_ARM\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\Debug\Obj\ppp.o] в присланном Вами проекте нет. СОВСЕМ НЕТ. Не написали Вы их. Вот так.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 12 2011, 11:21
|
Участник

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

|
Не знаю, где Вы нашли столько ошибок и предупреждений. Я распаковал архив и откомпилил его. Вот результат: Building configuration: STM32_F107_uCOS_5.30 - Debug Updating build tree... 296 file(s) deleted. Updating build tree... netdb.c os_tmr.c igmp.c netifapi.c err.c stm32f10x_i2c.c udpecho.c os_task.c stm32f10x_flash.c os_dbg.c bsp_int.c tcp_in.c stm32f10x_spi.c lib_str.c inet.c lib_mem.c icmp.c tcpserver2.c os_flag.c lwIP.c Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\port\lwIP.c 142 tcpserver.c Warning[Pe177]: variable "send_data" was declared but never referenced D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\netapp\tcpserver.c 48 misc.c api_lib.c netbuf.c tcpmultiserver.c os_core.c system_stm32f10x.c udpserver.c os_mutex.c magic.c chap.c fsm.c Warning[Pe223]: function "strlen" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\fsm.c 291 Warning[Pe223]: function "memcpy" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\fsm.c 345 Warning[Pe550]: variable "code" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\fsm.c 834 Warning[Pe550]: variable "id" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\fsm.c 834 dhcp.c slipif.c loopif.c tcp_out.c Warning[Pe550]: variable "tcphdr" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\core\tcp_out.c 458 Warning[Pe550]: variable "tcphdr" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\core\tcp_out.c 871 Warning[Pe550]: variable "tcphdr" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\core\tcp_out.c 925 ppp.c Warning[Pe177]: variable "pc" was declared but never referenced D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 309 Warning[Pe177]: variable "pc" was declared but never referenced D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 328 Warning[Pe550]: variable "c" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 731 pap.c Warning[Pe223]: function "strlen" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\pap.c 127 Warning[Pe223]: function "memset" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\pap.c 442 Warning[Pe550]: variable "msg" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\pap.c 467 Warning[Pe550]: variable "msg" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\pap.c 506 Warning[Pe223]: function "memcpy" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\pap.c 560 Warning[Pe223]: function "memcpy" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\pap.c 592 app.c stats.c stm32f10x_gpio.c sample_http.c md5.c ip_frag.c udpclient.c sys_arch.c Warning[Pe550]: variable "ubErr" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\port\sys_arch.c 119 Warning[Pe550]: variable "ubErr" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\port\sys_arch.c 134 Warning[Pe550]: variable "ucErr" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\port\sys_arch.c 277 core_cm3.c os_q.c sample_TTCP.c Warning[Pe550]: variable "data" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\netapp\sample_TTCP.c 115 auth.c Warning[Pe223]: function "memcpy" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\auth.c 365 Warning[Pe223]: function "memset" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\auth.c 389 Warning[Pe223]: function "memset" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\auth.c 420 Warning[Pe223]: function "strcpy" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\auth.c 881 Warning[Pe223]: function "strcpy" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\auth.c 884 memp.c os_mem.c inet_chksum.c dns.c ppp_oe.c chpms.c randm.c Warning[Pe223]: function "srand" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\randm.c 205 Warning[Pe223]: function "rand" declared implicitly D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\randm.c 243 raw.c ethernetif.c etharp.c ip_addr.c app_vect_v5.c mem.c cpu_c.c udp.c vj.c api_msg.c autoip.c bsp.c bsp_periph.c cpu_a.asm init.c ip.c ipcp.c lcp.c lib_mem_a.asm netdatapack.c Warning[Pa093]: implicit conversion from floating point to integer D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\netapp\netdatapack.c 71 netif.c netio.c os_cpu_a.asm os_cpu_c.c os_mbox.c os_sem.c os_time.c pbuf.c sockets.c stm3210c_eval_lcd.c stm32_eth.c stm32f10x_adc.c stm32f10x_can.c stm32f10x_dbgmcu.c stm32f10x_exti.c stm32f10x_rcc.c stm32f10x_tim.c stm32f10x_usart.c sys.c tcp.c tcpclient.c tcpecho.c Warning[Pe550]: variable "err" was set but never used D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\netapp\tcpecho.c 47 tcpip.c Linking Error[Li005]: no definition for "sys_jiffies" [referenced from D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\Debug\ Obj\ppp.o] Error[Li005]: no definition for "sio_write" [referenced from D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\Debug\Obj\ ppp.o] Error[Li005]: no definition for "sio_read_abort" [referenced from D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\IAR\F107_uCOS\ Debug\Obj\ppp.o] Error while running Linker Total number of errors: 3 Total number of warnings: 31 /*===========================================================================*/
А вот что по поиску предмета первой ошибки: D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\include\lwip\sys.h 121 #ifndef sys_jiffies D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\include\lwip\sys.h 122 u32_t sys_jiffies(void); /* since power up. */ D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 803 pc->lastXMit = sys_jiffies(); D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 902 if ((sys_jiffies() - pc->lastXMit) >= PPP_MAXIDLEFLAG) { D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 906 pc->lastXMit = sys_jiffies(); D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 1057 pc->lastXMit = sys_jiffies(); D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 1104 if ((sys_jiffies() - pc->lastXMit) >= PPP_MAXIDLEFLAG) { D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\ppp.c 1107 pc->lastXMit = sys_jiffies(); D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\randm.c 201 avRandomSeed += sys_jiffies(); /* XXX */ D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\randm.c 226 avRandomSeed += (sys_jiffies() - last_jiffies); /* XXX */ D:\Project_MiDV\TCP_IP stack\Project\STM32_F107_lwIP_uCOS\lwIP\src\netif\ppp\randm.c 228 last_jiffies = sys_jiffies(); ---------- Found 11 instances. Searched in 251 files.
Во второй строке сверху она определяется.
Хотя... Это стандартный tcpip стек LwIP v.1.3.0 И я пытаюсь использовать в нем ppp.
Сообщение отредактировал MiDV - Aug 12 2011, 11:15
|
|
|
|
|
Aug 12 2011, 11:34
|
Участник

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

|
Да, действительно, эти функции не прописаны. мол, кому надо - напишете Спасибо всем.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|