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.

[参考译文] Compiler/TM4C129ENCPDT:编译问题

Guru**** 2463330 points
Other Parts Discussed in Thread: TM4C129ENCPDT, EK-TM4C1294XL, EK-TM4C129EXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/653951/compiler-tm4c129encpdt-compiling-issue

主题中讨论的其他器件:TM4C129ENCPDTEK-TM4C1294XLEK-TM4C129EXL

RT 编号:TM4C129ENCPDT

工具/软件:TI C/C++编译器

大家好、

我正在尝试移植和编译一个现有项目"Enet_s2e"、该项目最初是由 TI 为 EK-TM4C1294XL 电路板开发的。 我已成功编译该项目并在另一个电路板 EK-TM4C129EXL 上运行。

第二步、我尝试将其作为独立项目、使其不依赖于外部库、因此我已将所有必需的库包含在项目目录中、并根据所附照片中的信息相应地修改了包含的库搜索路径。

现在、在编译期间、编译器可以查看所有包含的库、因此可以链接所有文件、但我遇到此错误。  

我遇到此错误;

说明资源路径位置类型
#20标识符"lwip_stats"未定义 sys_arch.c /FreeRTOSUDP/third_party/lwip-1.4.1/ports/tiva-tm4c129第219行 C/C++问题

说明资源路径位置类型
#20标识符"sys"未定义 sys_arch.c /FreeRTOSUDP/third_party/lwip-1.4.1/ports/tiva-tm4c129第192行 C/C++问题

以下是错误屏幕的快照。

库搜索路径看起来正确、如下图所示。

我也以压缩格式附加了项目。

压缩的文件 FreeRTOSUDP.zip 将无法编译。

请注意,当我未更改“包含文件搜索路径”时,同一项目已编译并成功运行。 其理念是将所有必需的库包含在工程文件夹中、以便其可移植、并且不依赖于外部库路径。

我提前感谢大家访问 cooperation.e2e.ti.com/.../0728.FreeRTOSUDP.zip

e2e.ti.com/.../FreeRTOS_5F00_UDP.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从照片中可以看出、我尝试包含绝对路径、只是为了查看是否可以暂时解决问题、但问题仍然存在。
    我仍然怀疑这是一个链接/路径问题、因为如果我不更改搜索路径、同一个项目就可以正常工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    当我仍然遇到问题时、有人能帮我吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sahil、

    可能这不是定义的、而是(lwip_stats)的测试、否则在哪里?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我如何检查它?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    按住 CTRL 键将鼠标悬停在(lwip_stats)上单击按钮以进行定义。 有时、在 CCS 中、我们必须将鼠标移动到其他开源文件、将鼠标悬停在某些变量上、然后单击代码助手即可开始调整。 然后返回、将鼠标悬停在要查找要定义的路径的上方。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     我导入了您的项目并将 SW_ROOT 更改为 C:\ti\TivaWare_C_Series-2.1.4.178、作为 TivaWare 安装、所有编译都正常。

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

    [引用用户="Charles Tsaa"]

    您好!

     我导入了您的项目并将 SW_ROOT 更改为 C:\ti\TivaWare_C_Series-2.1.4.178、作为我的 TivaWare 安装和所有编译

    [/报价]

    e2e.ti.com/.../8015.FreeRTOSUDP.zipCharles我很抱歉压缩了错误的项目目录。 实际上、这也是一个对我有用的方法、因为它会引导到标准路径。 以下是正确的压缩项目、其中所有驱动程序都指向本地项目目录。

    请查找随附的压缩文件。

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

    [引用 user="BP101]\n 按住 CTRL 键鼠标悬停在(lwip_stats)单击按钮以进行定义。 有时、在 CCS 中、我们必须将鼠标移动到其他开源文件、将鼠标悬停在某些变量上、然后单击代码助手即可开始调整。 然后返回、将鼠标悬停在要查找要定义的路径的上方。

    [/报价]

    您好!

    我选中了它,它指向正确的文件:(

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    lwipopts.h? 并且位于项目根文件夹中?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在移植项目后重新生成/刷新索引中的文件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    是的、我可以看到文件"lwipopts.h"位于搜索路径中、并且它确实存在。
    我也重建并刷新索引。 运气差
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../2251.FreeRTOSUDP.zipHello所有、

    是否有人尝试构建项目?

    我已做了一些进一步的修改、并以 zip 格式附加。

    我正在等待您的帮助。

    请查找随附的压缩文件、该文件包含了项目目录中的所有驱动程序。

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

    您是否在(sys_arch.c)顶部添加了#include "lwipopts.h"、以查看是否发现了要定义的路径。  回想 一下另一个(h)文件中嵌入的定义导致的编译器问题(stats) 、并将 (stats)移动 到(lwippts.h)中。  

    
    

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 BP101:
    感谢您研究问题。 我在编译时遇到了同样的问题、但还没有弄清楚如何解决。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="BP101"]

    您是否在(sys_arch.c)顶部添加了#include "lwipopts.h"、以查看是否发现了要定义的路径。  回想 一下另一个(h)文件中嵌入的定义导致的编译器问题(stats) 、并将 (stats)移动 到(lwippts.h)中。  

    //
    ////
    --- 统计数据状态选项---
    ////
    *****************
    #define LWIP_STATS 0 //无打印统计= 0
    
    #if LWIP_STATS
    
    #define LWIP_STATS_DISPLAY 1
    //#define LINK_STATS 0
    //#define ETHARP_STATS (LWIP_ARP)
    //#define IP_STATS 1
    //#define IPFRAG_STATS (IP_RELEGECTING|| IP_FRAG)
    //#define ICMP_STATS 1
    //#define IGMP_STATS (LWIP_IGMP)
    //#define UDP_STATS (LWIP_UDP)
    //#define tcp_stats (LWIP_TCP)
    #define MEM_STATS 1
    //#define MEMP_STATS 0
    //#define SYS_STATS 0
    
    #else
    
    #define LWIP_STATS_DISPLAY 0
    #define LINK_STATS 0
    #define ETHARP_STATS 0
    #define IP_STATS 0
    #define IPFRAG_STATS 0
    #define icmp_stats 0
    #define IGMP_STATS 0
    #define UDP_STATS 0
    #define tcp_stats 0
    #define MEM_STATS 0
    #define MEMP_STATS 0
    #define SYS_STATS 0
    
    #endif /* LWIP_stats */ 

    [/报价]

    您好!

    我还在 sys_arch.c 中包含了"lwipopts.h"、但仍然会得到相同的错误。 很奇怪,我在过去的7天里一直在努力解决这个错误。。。

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

    [引用用户="Charles Tsaaaa]Hi BP101、
    感谢您研究问题。 我在编译时遇到了同样的问题、但还没有弄清楚如何解决。

    [/报价]

    感谢 Charles 仍然保持在环路中。  

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

    是的、它位于根文件夹中、是的、我清理了整个项目刷新生成整个项目刷新索引等。。

    甚至在新工作区中尝试

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    加载项目-似乎缺少与多个 LWIP 文件夹相关的 GIT 链接。 请注意,LWIP 文件夹指示(?) 与其他项目文件夹中的黄色桶相对。 不熟悉团队项目、但项目属性下的团队可能允许从云文件夹路径修补 GIT 项目。 编译器似乎混淆了如何找到 GIT 路径以查找 LWIP_STATS 定义以及项目中存在的其他问题。

    也许 Charles 或 Todd 会提供有关该主题的更多信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此、我完全删除了 git 存储库、并重建索引和整个项目。 没有帮助..

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否清理并尝试切换到项目的较低编译器版本? 有时、C 文件顶部的(#include"xx")顺序会影响编译器/链接器遍历文件夹路径的方式。 如果您修改了原始(移植)项目设置、则您的问题可能是自行造成的?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正如我说过的、正如在线程说明中一样、我需要 使它成为一个单个目录项目、所有驱动程序文件都位于同一目录中。 我同意这是自我强加的、但我以压缩格式共享了这两个项目、您甚至亲自试用了它们。 似乎没有任何问题。 相同的文件如果不复制到项目目录中,则相同的驱动程序会成功编译。。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以看到所有文件和路径都已正确链接,但仍有问题!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、

    我曾经遇到过相同的问题、但没有遇到相同的问题。
    有时编译器不会连接到定义 lwip_stats 实体的路径、这可能会有很多问题、在我的案例中、根文件中没有该实体、即使它应该具有该实体。 因此、最简单的方法是重新定义 lwip_stats 实体。 如果这不是您使用的较高框架、您只需将代码添加到另一个文件中并将其包含在内、只需获取定义 lwip_stats 的文件、而不是将其包含在内并在编码中直接精确定位该实体。 这应该可以解决问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在"原始项目链接资源"选项卡(项目属性)上有移植期间未遇到的链接资源?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sahil 已经被告知要尝试几篇文章,甚至在答复我时复制了这些文章。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有没有关于此问题的进展?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     我不知道到底发生了什么。 我很不幸运能够编译您的项目。 当您将整个 third_party/lwip_1.4.1复制到项目文件夹时、CCS 将编译其下的所有文件(.c 文件)。 这可能是问题所在、我不知道是否所有文件都要重新构建。

    我用 enet_lwip 示例进行了一个实验。 首先、我复制与 PROJECT_LOC 相关的两个级别的第三方文件夹、并且所有编译都正常。 请参见下图。 注意 enet_lwip_tmp 示例还具有自己的第三方文件夹、其中包含需要重建的源文件。 lwip 东西的包含路径是相对于 project_LOC/。

     但是、如果我在 PROJECT_LOC 下复制 third_party/loip-1.4.1、那么我将会遇到许多编译错误。 我现在只能说这一点。  

     如果您希望使项目可移植、则无需使用项目文件夹中包含的所有文件自行完成所有操作。 您应该定义路径变量和编译变量、以使项目可移植。 请参阅 TM4C 技术讲座文档中有关路径变量和编译变量的概述。