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

 
 
 
Reply to this topicStart new topic
> Компиляция lwIP 1.3.2 под ARM, Ошибки :(
_Макс
сообщение Apr 24 2010, 14:15
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 24 2010, 15:12
Сообщение #2


Гуру
******

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



Цитата(_Макс @ Apr 24 2010, 16:30) *
Возможно это как-то связано с настройками компилятора?

Это связано с написанными через анальное отверстие исходными текстами. "Из интернету" это обычное дело sad.gif. Другое дело, что если у Вас такие сообщения вызывают непонимание, то.. то Вам надо начинать с изучения собственно языка. Книжку K&R второе издание в руки и преобразование типов штудировать. Ну а "non-native end of line sequence detected" это вроде тоже черным по белому написано. Исходник у Вас наверняка в линуксовом стиле - с одними linefeed в конце строк. "Controlling expression is constant" так вообще дословно переведите и что непонятно?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 24 2010, 15:35
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



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

Спасибо, за Ваш комментарий но он мне не помог. Нет другой возможности как использовать компоненты из Интернет. Я задал этот вопрос потому-что я наверняка не первый на этом форуме, кто компилирует lwIP, в надежде получить ответ, который поможет решить проблему. Я читал про преобразование типов, что правда с void имею дело в первый раз. И речь идет не о самописной праграмме, а об исходниках, которые априори работают, поэтому проще спросить, а там и понимание void найдется.

Смотрю на исходники firmware от ST, там такие же записи в тех местах где у меня ошибки. Но от ST компилится без ошибок. Почему?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 24 2010, 15:39
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 24 2010, 15:48
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Цитата(zltigo @ Apr 24 2010, 18:54) *
Ответ Вы получили, однако, как оказалось Вам нужен не ответ, а какое-то готовое решение.
Старайтесь четче формулировать вопросы.

Еще раз повторюсь, что исходники рабочие, они компилируются без ошибок в другом проекте. В моем ошибки. Возможно это связано с настройками проекта, я понимаю что чего-то не знаю, но ведь для этого существуют форумы))

Если исходников у вас нет, вы можете взять их здесь rolleyes.gif

Цитата(zltigo @ Apr 24 2010, 18:54) *
Вы про ошибки или про предупреждения тоже? Ошибки - по другому описаны прототипы или используются явные преобразования типов.

Я про ошибки, проект от ST компилируется и работает. Просмотрел несколько, вроде и прототипы также записаны.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 24 2010, 16:05
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 24 2010, 16:09
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Цитата(zltigo @ Apr 24 2010, 19:20) *
Совершенно правильно ругается. Там должно быть
Код
  iphdr = (struct ip_hdr *)p->payload;

Будет компилироваться ЛЮБЫМ компилятором. Дальше в том-же духе, полагаю.

Абсолютно точно, но в демо проекте от ST такие же записи и все работает. Почему? Действительно, там должно быть явное преобразование типа, но как так сделать, что не вставлять теперь "(ip_hdr *)" во все места (их порядка 200).
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Apr 24 2010, 17:48
Сообщение #8


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

Группа: Свой
Сообщений: 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;)
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 25 2010, 06:50
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 25 2010, 14:09
Сообщение #10


Гуру
******

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



Цитата(_Макс @ Apr 24 2010, 19:24) *
Абсолютно точно, но в демо проекте от ST такие же записи и все работает. Почему?
Потому что демо проект компилируется в режиме С. А вы компилируете в режиме С++. В С происходит неявное приведение любого указателя к void * и наоборот, void * к указателю на любой тип. В плюсах неявное преобразование void * к любому указателю отсутствует, нужно делать явное приведение типа.


--------------------
На любой вопрос даю любой ответ
"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
_Макс
сообщение Apr 25 2010, 21:16
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 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 Правил форума. Из сообщения удалено неумное цитирование.
Go to the top of the page
 
+Quote Post
_Макс
сообщение Apr 26 2010, 11:40
Сообщение #12


Знающий
****

Группа: Участник
Сообщений: 691
Регистрация: 24-05-07
Пользователь №: 27 945



Убрал из проекта файлы core/ipv6, скомпилировалось без ошибок)
Код
Done. 0 error(s), 230 warning(s)
Буду теперь без ip6) От чего это винигрет, сложно понять. Ну и количество предупреждений потрясное)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:32
Рейтинг@Mail.ru


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