This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LWIP_HTTPD_CGI 时发生链路错误 MCU-PLUS-SDK

Guru**** 2463330 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1468825/mcu-plus-sdk-am243x-link-error-when-using-lwip_httpd_cgi

器件型号:MCU-PLUS-SDK AM243X

工具与软件:

使用:CCS 版本:20.0.2.5__1.6.2、带 Sitara AM243x MCU 的 TI Launchpad 套件


我正在尝试将 CGI 处理程序添加到其中一个演示应用程序(ti/mcu_plus_sdk_am243x_10_01_00_32/source/networking/enet/core/examples/lwip/cpsw_lwip_https)、我添加了 httpd.h 和 httpd_opts.h 标头、并将 lwipopts.h 与这些定义一起创建和包含在内

#define LWIP_HTTPD 1.
#define LWIP_HTTPD_CGI 1.
#define LWIP_HTTPD_SUPPORT_POST 1

我在打电话 HTTP_SET_cgi_handlers 的符号 APP_setupNetworkStack 函数、一切都会编译但不链接、我得到以下输出:
首次引用了未定义的
符号
--- -------
http_set_cgi_handlers ./app_main
错误#10234-D:未解析的符号仍存在
错误#10010:链接过程中遇到错误;未构建"cpsw_lwip_https_am243x-lp_r5fss0-0_freertos_ti-arm-clang.out"
。  ${MCU_PLUS_SDK_PATH}/source/networking/enet/lib 和  ${MCU_PLUS_SDK_PATH}/source/networking/lwip/lib 目录位于链接器库搜索路径中。
我缺少什么?
为了成功构建、我需要向项目中添加什么内容?


谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的  Omar Ordaz:

    感谢您的提问、耐心等待。

    我离开办公室几周了。 我们将查看此内容并返回给您。

    此致

    Ashwani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    • 请检查 makefile 中是否存在 httpd.c 文件:
      source/networking/lwip/makefile.stack_freertos.am243x.r5f.gcc-armv7
    • 在 source/networking/lwip/lwip-config/am243x/lwipopts.h 中以 belowm 的形式进行更改
      #define LWIP_HTTPD 1.
      #define LWIP_HTTPD_CGI 1.
      #define LWIP_HTTPD_SUPPORT_POST  1

    • 构建库。 (make -s -j4库)

      CCS 编译不进行库编译、重新编译库(调试和发布)

    • 无需执行‘我添加了 httpd.h 和 httpd_opts.h 标头"

    此致

    Ashwani

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Ashwani:  

    我尝试了您建议的更改、但未获得原始错误、但我收到了一组新错误。  

     

    /source/networking/enet/core/examples/lwip/cpsw_lwip_https/httpd.c:979:7:错误:使用未声明的标识符"http_cgi_paramcount"
    /source/networking/enet/core/examples/lwip/cpsw_lwip_https/httpd.c:981:11:错误:使用未声明的标识符"httpd_num_cgis"
    /source/networking/enet/core/examples/lwip/cpsw_lwip_https/httpd.c:981:29:错误:使用未声明的标识符'httpd_cgis'
    /source/networking/enet/core/examples/lwip/cpsw_lwip_https/httpd.c:982:25:错误:使用未声明的标识符'httpd_num_cgis'

     
    等等  

    通过查看 httpd.c (其中定义了 http_cgi_paramcount)、我看到定义为"#if LWIP_HTTPD_CGI"块、所以应该将其编译并包含在新库中、但我仍然遇到这些错误。

     

    如果我将更改恢复到  lwipopts.h、我会返回到原始错误。  

     

    对我缺少什么有什么想法?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Omar:

    我向开发团队提出了这个问题。

    当我在这里得到任何更新时、我们会随时通知您。

    此致

    Ashwani