|
|
  |
Компиляция lwIP 1.3.2 под ARM, Ошибки :( |
|
|
|
Apr 24 2010, 14:15
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Подскажите пожалуйста, от чего во время компиляции могут быть ошибки типа: Код ... api_lib.c Error[Pe513]: a value of type "void *" cannot be assigned to an entity of type "ip_hdr *" D:\IAR Embedded Workbench\scmRTOS\scmRTOS v3.10 for STM32\lwIP\core\ipv4\icmp.c 93 ... Error[Pe167]: argument of type "void *" is incompatible with parameter of type "ip_addr *" D:\IAR Embedded Workbench\scmRTOS\scmRTOS v3.10 for STM32\lwIP\core\ipv4\icmp.c 216 ... Warning[Pe236]: controlling expression is constant D:\IAR Embedded Workbench\scmRTOS\scmRTOS v3.10 for STM32\lwIP\core\ipv4\icmp.c 299 ... Warning[Pa050]: non-native end of line sequence detected (this diagnostic is only issued once) D:\IAR Embedded Workbench\scmRTOS\scmRTOS v3.10 for STM32\lwIP\core\ipv4\igmp.c 1 inet.c ... Error[Pe120]: return value type ("void *") does not match the function type ("netif *") D:\IAR Embedded Workbench\scmRTOS\scmRTOS v3.10 for STM32\lwIP\core\ipv4\ip.c 100 ... Error[Pe144]: a value of type "void *" cannot be used to initialize an entity of type "ip_reassdata *" D:\IAR Embedded Workbench\scmRTOS\scmRTOS v3.10 for STM32\lwIP\core\ipv4\ip_frag.c 477 ... Все идущие в комплекте файлы подключены, в том числе port от демки STM32. Ошибок по не найденным файлам нет. Возможно это как-то связано с настройками компилятора?
Сообщение отредактировал _Макс - Apr 24 2010, 14:23
|
|
|
|
|
Apr 24 2010, 15:35
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(zltigo @ Apr 24 2010, 18:27)  Это связано с написанными через анальное отверстие исходными текстами. "Из интернету" это обычное дело  . Другое дело, что если у Вас такие сообщения вызывают непонимание, то.. то Вам надо начинать с изучения собственно языка. Книжку K&R второе издание в руки и преобразование типов штудировать. Ну а "non-native end of line sequence detected" это вроде тоже черным по белому написано. Исходник у Вас наверняка в линуксовом стиле - с одними linefeed в конце строк. "Controlling expression is constant" так вообще дословно переведите и что непонятно? Спасибо, за Ваш комментарий но он мне не помог. Нет другой возможности как использовать компоненты из Интернет. Я задал этот вопрос потому-что я наверняка не первый на этом форуме, кто компилирует lwIP, в надежде получить ответ, который поможет решить проблему. Я читал про преобразование типов, что правда с void имею дело в первый раз. И речь идет не о самописной праграмме, а об исходниках, которые априори работают, поэтому проще спросить, а там и понимание void найдется. Смотрю на исходники firmware от ST, там такие же записи в тех местах где у меня ошибки. Но от ST компилится без ошибок. Почему?
|
|
|
|
|
Apr 24 2010, 15:39
|

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

|
Цитата(_Макс @ Apr 24 2010, 17:38)  Спасибо, за Ваш комментарий но он мне не помог. Чем мог. Взять и переписать за Вас исходники я не могу. Хотя-бы по причине что я их не вижу. Цитата в надежде получить ответ, который поможет решить проблему. Ответ Вы получили, однако, как оказалось Вам нужен не ответ, а какое-то готовое решение. Старайтесь четче формулировать вопросы. Цитата там такие же записи в тех местах где у меня ошибки. Но от ST компилится без ошибок. Почему? Вы про ошибки или про предупреждения тоже? Ошибки - по другому описаны прототипы или используются явные преобразования типов. Цитата(_Макс @ Apr 24 2010, 17:50)  а там и понимание void найдется. Настоятельно рекомендую найти понимание творимого до, а не после того, как сотворили. Очень способствует экономии времени и нервов, не говоря о качестве.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 24 2010, 15:48
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(zltigo @ Apr 24 2010, 18:54)  Ответ Вы получили, однако, как оказалось Вам нужен не ответ, а какое-то готовое решение. Старайтесь четче формулировать вопросы. Еще раз повторюсь, что исходники рабочие, они компилируются без ошибок в другом проекте. В моем ошибки. Возможно это связано с настройками проекта, я понимаю что чего-то не знаю, но ведь для этого существуют форумы)) Если исходников у вас нет, вы можете взять их здесь  Цитата(zltigo @ Apr 24 2010, 18:54)  Вы про ошибки или про предупреждения тоже? Ошибки - по другому описаны прототипы или используются явные преобразования типов. Я про ошибки, проект от ST компилируется и работает. Просмотрел несколько, вроде и прототипы также записаны.
|
|
|
|
|
Apr 24 2010, 16:05
|

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

|
Цитата(_Макс @ Apr 24 2010, 18:03)  Еще раз повторюсь, что исходники рабочие, они... написаны, повторю, через анальное отверстие. Цитата Error[Pe513]: a value of type "void *" cannot be assigned to an entity of type "ip_hdr *" D:\IAR Embedded Workbench\scmRTOS\scmRTOS v3.10 for STM32\lwIP\core\ipv4\icmp.c 93 Совершенно правильно ругается. Там должно быть Код iphdr = (struct ip_hdr *)p->payload; Будет компилироваться ЛЮБЫМ компилятором. Дальше в том-же духе, полагаю.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Apr 24 2010, 16:09
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(zltigo @ Apr 24 2010, 19:20)  Совершенно правильно ругается. Там должно быть Код iphdr = (struct ip_hdr *)p->payload; Будет компилироваться ЛЮБЫМ компилятором. Дальше в том-же духе, полагаю. Абсолютно точно, но в демо проекте от ST такие же записи и все работает. Почему? Действительно, там должно быть явное преобразование типа, но как так сделать, что не вставлять теперь "(ip_hdr *)" во все места (их порядка 200).
|
|
|
|
|
Apr 24 2010, 17:48
|
Профессионал
    
Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007

|
Цитата(_Макс @ Apr 24 2010, 20:24)  Абсолютно точно, но в демо проекте от ST такие же записи и все работает. Почему? Действительно, там должно быть явное преобразование типа, но как так сделать, что не вставлять теперь "(ip_hdr *)" во все места (их порядка 200). Надо взять исходники lwip из их родного места лежания: http://www.very-clever.com/download/nongnu.../lwip-1.3.2.zip а не пользоваться не известно чем. И если вы их внимательно посмотрите ( в частности icmp.c , там стоит именно: iphdr = (struct ip_hdr *)p->payload;)
|
|
|
|
|
Apr 25 2010, 06:50
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(sergeeff @ Apr 24 2010, 21:03)  Надо взять исходники lwip из их родного места лежания: http://www.very-clever.com/download/nongnu.../lwip-1.3.2.zip а не пользоваться не известно чем. И если вы их внимательно посмотрите ( в частности icmp.c , там стоит именно: iphdr = (struct ip_hdr *)p->payload;) Да нет же, посмотрите внимательно, откройте два файла с одинаковым именем и сравните, воспользуйтесь утилитой, в конце концов архивы на которые сослались вы и я, имеют абсолютно одинаковый размер. Добавьте символ и размер будет другой. "iphdr = (struct ip_hdr *)p->payload;" и у меня тоже есть, но не везде, мы смотрим разные строки.
Сообщение отредактировал _Макс - Apr 25 2010, 06:51
|
|
|
|
|
Apr 25 2010, 21:16
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Цитата(Сергей Борщ @ Apr 25 2010, 17:09)  Потому что демо проект компилируется в режиме С. А вы компилируете в режиме С++. В С происходит неявное приведение любого указателя к void * и наоборот, void * к указателю на любой тип. В плюсах неявное преобразование void * к любому указателю отсутствует, нужно делать явное приведение типа. Еще убрал галочку prototype require, осталось только три файла в которых ошибки, который касаются ipv6. И еще лес предупреждений. Да, отлично, Вы правы, я не знал этой разницы. На две сотни ошибок стало меньше. Но еще 63 осталось)
Сообщение отредактировал rezident - Apr 26 2010, 15:05
Причина редактирования: Нарушение п.3.4 Правил форума. Из сообщения удалено неумное цитирование.
|
|
|
|
|
Apr 26 2010, 11:40
|
Знающий
   
Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945

|
Убрал из проекта файлы core/ipv6, скомпилировалось без ошибок) Код Done. 0 error(s), 230 warning(s) Буду теперь без ip6) От чего это винигрет, сложно понять. Ну и количество предупреждений потрясное)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|