• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Ошибка линковки примера Mongoose

r44083

Member
Пытаюсь собрать проект из примеров к Mongoose для ESP8266.
Во время линковки получаю кучу ошибок. Похоже что все они связаны с stdlib.

Вот часть лога билда проекта, где начинается линковка:
Код:
...
- linking...
xtensa-lx106-elf-gcc -Teagle.app.v6.ld -Lsrc/hal/ESP8266_SDK/lib -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lcirom -lcrypto -lespconn -lespnow -lfreertos -lgcc -ljson -llwip -lmain -lnet80211 -lnopoll -lphy -lpp -lpwm -lspiffs -lssc -lwpa -lwps -lhal -Wl,--end-group -Wl,-Map="out/lst/ESP8266-rtos-hal.map",--cref out/obj/main.o out/obj/macros.o out/obj/drv_di.o out/obj/xprintf.o out/obj/esp_libc.o out/obj/mongoose.o out/obj/hal_gpio.o out/obj/hal_systick.o out/obj/hal_tim.o -o out/bin/ESP8266-rtos-hal.elf
f:/soft/1-ready/sublimetext/xtensa-lx106-elf/bin/../lib/gcc/xtensa-lx106-elf/5.1.0/../../../../xtensa-lx106-elf/bin/ld.exe: out/bin/ESP8266-rtos-hal.elf section `.text' will not fit in region `iram1_0_seg'
out/obj/mongoose.o: In function `blk0':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1226: undefined reference to `__moddi3'
out/obj/mongoose.o: In function `c_itoa':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1510: undefined reference to `__moddi3'
out/obj/mongoose.o: In function `parse_uri_component':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:4809: undefined reference to `__ctype_ptr__'
out/obj/mongoose.o: In function `mg_socket_if_get_conn_addr':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3768: undefined reference to `snprintf'
out/obj/mongoose.o: In function `mg_hexdump_n':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9370: undefined reference to `snprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9372: undefined reference to `snprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9373: undefined reference to `snprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9380: undefined reference to `snprintf'
out/obj/mongoose.o:F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9383: more undefined references to `snprintf' follow
out/obj/mongoose.o: In function `mg_open_listening_socket':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3266: undefined reference to `fprintf'
out/obj/mongoose.o: In function `mg_socket_if_remove_conn':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3266: undefined reference to `fprintf'
out/obj/mongoose.o: In function `mg_tun_if_connect_udp':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3266: undefined reference to `vfprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3266: undefined reference to `fputc'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3266: undefined reference to `fflush'
out/obj/mongoose.o: In function `cs_log_print_prefix':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:300: undefined reference to `vfprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:301: undefined reference to `fputc'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:309: undefined reference to `fflush'
out/obj/mongoose.o: In function `cs_base64_encode':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:458: undefined reference to `fputc'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:458: undefined reference to `fputc'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:458: undefined reference to `fputc'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:459: undefined reference to `fputc'
out/obj/mongoose.o: In function `cs_fprint_base64':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:474: undefined reference to `fputc'
out/obj/mongoose.o: In function `cs_base64_decode':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:530: undefined reference to `gettimeofday'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:531: undefined reference to `gettimeofday'
out/obj/mongoose.o: In function `MD5_Final':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:977: undefined reference to `__assert_func'
out/obj/mongoose.o: In function `mbuf_resize':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1050: undefined reference to `__assert_func'
out/obj/mongoose.o: In function `mbuf_trim':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1059: undefined reference to `__assert_func'
out/obj/mongoose.o: In function `cs_to_hex':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1754: undefined reference to `sscanf'
out/obj/mongoose.o: In function `cs_md5':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:992: undefined reference to `sscanf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1001: undefined reference to `sscanf'
out/obj/mongoose.o: In function `cs_from_hex':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1775: undefined reference to `sscanf'
out/obj/mongoose.o: In function `mg_ncasecmp':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1804: undefined reference to `sscanf'
out/obj/mongoose.o: In function `mg_vcasecmp':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1148: undefined reference to `vsnprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1154: undefined reference to `vsnprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:1154: undefined reference to `vsnprintf'
out/obj/mongoose.o: In function `mg_parse_address':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:2367: undefined reference to `vsnprintf'
out/obj/mongoose.o: In function `mg_url_decode':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6396: undefined reference to `snprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6397: undefined reference to `sscanf'
out/obj/mongoose.o: In function `mg_http_parse_header':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6518: undefined reference to `strdup'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6524: undefined reference to `strdup'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6522: undefined reference to `atoi'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6542: undefined reference to `strtoll'
out/obj/mongoose.o: In function `mg_get_http_basic_auth':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6545: undefined reference to `atoi'
out/obj/mongoose.o: In function `mg_parse_multipart':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:7776: undefined reference to `strtoll'
out/obj/mongoose.o: In function `mg_register_http_endpoint':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:7806: undefined reference to `snprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:7812: undefined reference to `snprintf'
out/obj/mongoose.o: In function `mg_skip':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9211: undefined reference to `fputs'
out/obj/mongoose.o: In function `mg_parse_http':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:5282: undefined reference to `fputs'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:5295: undefined reference to `fclose'
out/obj/mongoose.o: In function `mg_http_parse_headers':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:5247: undefined reference to `fprintf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:5250: undefined reference to `fputs'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:5261: undefined reference to `fclose'
out/obj/mongoose.o: In function `mg_call':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:2030: undefined reference to `__assert_func'
out/obj/mongoose.o: In function `mg_if_poll':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:2087: undefined reference to `strerror'
out/obj/mongoose.o: In function `mg_mgr_free':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:2208: undefined reference to `strerror'
out/obj/mongoose.o: In function `mg_mgr_handle_conn':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3514: undefined reference to `snprintf'
out/obj/mongoose.o: In function `mg_socket_if_poll':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3649: undefined reference to `rand'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:3678: undefined reference to `rand'
out/obj/mongoose.o: In function `mg_printf_html_escape':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6497: undefined reference to `sscanf'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:6505: undefined reference to `sscanf'
out/obj/mongoose.o: In function `mg_ws_handler':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9058: undefined reference to `__assert_func'
out/obj/mongoose.o: In function `mg_match_prefix_n':
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9494: undefined reference to `rand'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9498: undefined reference to `rand'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9498: undefined reference to `rand'
F:\simple_hal\ESP8266-rtos-hal/src/extra-lib/mongoose/mongoose.c:9501: undefined reference to `rand'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [out/bin/ESP8266-rtos-hal.elf] Error 1
make[1]: Leaving directory `F:/simple_hal/ESP8266-rtos-hal'
make: *** [all] Error 2
[Finished in 8.1s with exit code 2]

Makefile прикреплён к теме.

Что может к этому приводить?
 

Вложения

r44083

Member
Да. Вернее встроил ваш пример в свой пустой проект.
Прикрепил архив проекта к теме.
 

Вложения

r44083

Member
Но я не хочу и не могу тянуть весь Mongoose фреймворк/OC. Нужен только вебсервер.
 

r44083

Member
Похоже нам нужно убить этот пример.

Используйте Mongoose OS - reduce IoT firmware development time up to 90%, там мангуст встроен и отлажен.
Может есть некий гайд как можно портировать\настроить Mongoose для ESP8266 ?
Просто на официальном сайте многократно упоминается что Mongoose имеет поддержку(совместимость) ESP8266.
 

pvvx

Активный участник сообщества
Похоже нам нужно убить этот пример.

Используйте Mongoose OS - reduce IoT firmware development time up to 90%, там мангуст встроен и отлажен.
Тоже ничего не выходит, а там написано:

Mongoose OS - сократить время разработки микропрограммного IoT до 90%

С открытым исходным кодом операционной системы для Интернет вещей

Не сокращается время разработки микропрограммного IoT, т.к. установщик лезет в COМ порт к оборудованию, которого не знает, а исходников не дает.
Выходит чистый обман или реклама? :)
Каким образом в ESP8266 влинкуются SSL от Mbed, а так-же стандартные библиотеки printf, eabi и прочее?
Не ясен вообще смысл нашлепки и переиначивания стандартных функций SDK, LwIP и Mbed SSL/TLS. Тем более есть несоответствия версий этих внешних библиотек у разных устройств.
Выходит, чтобы запустить Mongoose OS надо иметь дополнительные (и не малые) ресурсы в устройстве и ещё переписать всю Mongoose OS, совмещая её вызовы к API этих устройств. Это вытекает в дополнительную разработку и цели её не оправдывают средства. Ну ради что только игры в "Mongoose OS", чтобы исчерпать ресурс устройства по RAM/Flash и производительности. :)
 
Последнее редактирование:

r44083

Member
Почему же в наше время сошли на нет простые и надёжные решения для конкретной задачи. Ведь веб сервер должен быть веб сервером, а не совмещать в себе SSL, бутлоадер, фреймворк и что там ещё.
 

pvvx

Активный участник сообщества
Почему же в наше время сошли на нет простые и надёжные решения для конкретной задачи. Ведь веб сервер должен быть веб сервером, а не совмещать в себе SSL, бутлоадер, фреймворк и что там ещё.
А таких решений не было (не существовало) на класс устройств SoC c WiFi имеющих до нескольких мегабайт RAM.
Посмотрите стандартные требования для реализации простого HTTP-Web сервера на линуксе.
LwIP для поддержки http-web-сервера по минимальным стандартам должен иметь свободных от 128 килобайт*... Поэтому забудьте о нормальном Web на ESP8266 и ESP-32S. Это огрызки. Только недобросовестные рекламшики несовместимых реализаций со стандартами, кои тут присутствуют, могут утверждать, что у них есть поддержка web-сервера для ESP.

Что такое OS - описано в викопедии (это API)

* Считается очень просто – TIME_WAIT по стандарту 120 сек. Сколько TCP соединений может отработать web в секунду, столько надо и RAM для выделения на структуры psb LwIP-у с флагом TIME_WAIT. Ну и плюс буфера… В принципе это касается поддержки любого TCP соединения. Проверок на возможность открытия новых соединений в Mongoose нет, да и много чего ещё там нет - один пиар ради игры... :)
 
Последнее редактирование:

lsm

Разработчик Smart.js
Команда форума
Почему же в наше время сошли на нет простые и надёжные решения для конкретной задачи. Ведь веб сервер должен быть веб сервером, а не совмещать в себе SSL, бутлоадер, фреймворк и что там ещё.
Давайте не будем на зеркало пенять.

Мангуст - это веб сервер и ничего в себе не совмещает.

Посмотрите на Makefile в примере, какие либы он подключает через -l ключи, и посмотрите на ваш список либ, сравните и скорее всего прояснится что нужно подключить.

И да, если есть мангуст, то кривой espconn не нужен.

Работающий фреймворк не хотите - разбирайтесь с SDK и линковкой.
 

pvvx

Активный участник сообщества
Работающий фреймворк не хотите - разбирайтесь с SDK и линковкой.
Хотим, но совместимый с другими. А то выходит уже сотни "фреймворков", большинство из которых недоделанные и каждый тянет в свой огород. Унификации вызовов API никакой.
Какие улучшения и отличительные особенности имеет Mongoose от Mbed? Первое сравнение показывает, что отрицательные.
 

lsm

Разработчик Smart.js
Команда форума
LwIP для поддержки http-web-сервера по минимальным стандартам должен иметь свободных от 128 килобайт*... Поэтому забудьте о нормальном Web на ESP8266 и ESP-32S. Это огрызки. Только недобросовестные рекламшики несовместимых реализаций со стандартами, кои тут присутствуют, могут утверждать, что у них есть поддержка web-сервера для ESP.
@pvvx давайте без тонких намеков. имейте смелость выражаться прямо, без "недобросовестных рекламщиков".

насчет того что на esp8266 веб сервер является огрызком - соглашусь.
 

pvvx

Активный участник сообщества
@pvvx давайте без тонких намеков. имейте смелость выражаться прямо, без "недобросовестных рекламщиков".
А как назвать всю ту писанину на сайте, если попытки поставить с него что угодно на примерно одинаковые платформы требует множественных исправлений и дело не одного вечера? (т.е. равно времени адаптации API имеющегося контролера к решаемым задачам без данного фреймворка?
 

lsm

Разработчик Smart.js
Команда форума
Хотим, но совместимый с другими. А то выходит уже сотни "фреймворков", большинство из которых недоделанные и каждый тянет в свой огород. Унификации вызовов API никакой.
Какие улучшения и отличительные особенности имеет Mongoose от Mbed? Первое сравнение показывает, что отрицательные.
Mongoose OS не нравится - разработайте свой! Мы никого не заставляем Mongoose OS использовать. Кому подходит, отлично. Нет - вперед, есть много других решений.
 

lsm

Разработчик Smart.js
Команда форума
А как назвать всю ту писанину на сайте, если попытки поставить с него что угодно на примерно одинаковые платформы требует множественных исправлений и дело не одного вечера?
@pvvx еще раз. Не нравится - не используйте. Писанину на сайте не читайте.
 

pvvx

Активный участник сообщества
Mongoose OS не нравится - разработайте свой! Мы никого не заставляем Mongoose OS использовать. Кому подходит, отлично. Нет - вперед, есть много других решений.
А это и создает каламбур и неразбериху для пользователей. И как следствие возникают подмены понятий. :) И вы являетесь этим источником подмены понятий. Вот и всё недовольство.
 

lsm

Разработчик Smart.js
Команда форума
А это и создает каламбур и неразбериху для пользователей. И как следствие возникают подмены понятий. :) И вы являетесь этим источником подмены понятий. Вот и всё недовольство.
Где конкретно вы увидели подмену понятий?

И зачем вы врете рассказывая что кода установщика нет? Код установщика открыт. Вот он: mongoose-os/mos at master · cesanta/mongoose-os · GitHub

И аргументы у вас если разобраться - часто мелочи всякие, выставляемые как существенные недостатки.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Где конкретно вы увидели подмену понятий?

И зачем вы врете рассказывая что кода установщика нет? Код установщика открыт. Вот он: mongoose-os/mos at master · cesanta/mongoose-os · GitHub
Я действовал как вы указали и написано на сайте - ваша программа полезла в COM порт и начала там шебуршить без разбора что там и как :)
После этого она не дала ничего. Т.е. Mongoose OS не установилась, как было заявлено в рекламе :)
И аргументы у вас если разобраться - часто мелочи всякие, выставляемые как существенные недостатки.
Мир состоит из мелочей. Все ошибки и недочеты в Mongoose OS перечислить я не в состоянии. Довольствуйтесь тем, что указал. :)
Будет мало, когда исправите указанные - добавлю.
 
Последнее редактирование:

lsm

Разработчик Smart.js
Команда форума
Я действовал как вы указали и написано на сайте - ваша программа полезла в COM порт и начала там шебуршить без разбора что там и как :)
После этого она не дала ничего. Т.е. Mongoose OS не установилась, как было заявлено в рекламе :)
Да что вы говорите :) Похоже другие установщики не "шебуршат без разбора" в ком порту, они магией прошивку заливают.

@pvvx не поставили, не нравится - проходите мимо.
 

pvvx

Активный участник сообщества
Да что вы говорите :) Похоже другие установщики не "шебуршат без разбора" в ком порту, они магией прошивку заливают.

@pvvx не поставили, не нравится - проходите мимо.
У нас свободная страна и любят блокировать сайты по требованиям :)

У меня такое дело – находить ошибки. Мелочные, но которые влияют на общую работоспособность. А пока можно поставить 2+ за данный фреймворк.
PS: В Эклипcе у него беда – “много строчек” и без правки установок (расширения числа строк в файле для парсинга) он не обрабатывается. Зачем всё впихнуто в один файл?
 
Сверху Снизу