【问题标题】:Build failed with no stated reason on Segger Embedded Studio after adding custom source files添加自定义源文件后,在 Segger Embedded Studio 上构建失败,没有说明原因
【发布时间】:2020-06-19 19:41:09
【问题描述】:

我正在从 nRF SDK 修改一个简单的示例项目(闪烁)。我在项目目录内的新文件夹中添加了一个头文件和一个 .c 文件,然后将该路径 ./lib 添加到公共预处理器 user include directories。然后我将标题添加到main.c。 我可以自己编译新库,但是当我构建整个项目时,我收到Build failed 错误,没有明确的理由跟进。

这是一张图片:

这里有人知道怎么打吗?

【问题讨论】:

  • 我对 Embedded Studio 不熟悉,但在“显示脚本/任务”的地方还有哪些其他选项? IDE 通常会过滤构建日志以简化输出 - 这可能无济于事。您需要看到的是作为工具链输出的原始构建日志,而不是 IDE 的摘要。
  • 感谢@Clifford!我查看了原始构建日志并发现了问题。在我添加的头文件中,一个变量后面没有 extern 关键字。菜鸟失误。感谢您为我指明正确的方向。
  • 那张照片看起来很像 Crossworks,我在想 Segger 可能正在使用该 IDE 并将其标记为他们自己的?在用户包含目录下的 Crossworks 中,您应该有 $(ProjectDir)/foo 其中foo 是新目录的名称。此外,如果 IDE 没有自动执行此操作,您可能必须在其中添加自定义库。

标签: build linker embedded nrf52 segger-jlink


【解决方案1】:

我没有专门用过Segger Studio,不过好像是下面的CrossWorks IDE。

在 CrossWorks 中,您必须执行以下操作:

  • 从 IDE 内部的工具 -> 包 -> 安装包下下载并安装所有相关库。获取您的特定目标 MCU 以及您将使用的任何特定板或库。如果此处缺少某些所需的库,您收到非常奇怪的错误。
  • 在项目中,在“项目资源管理器”中单击项目名称本身。然后在属性窗口中,检查设置(这在不同版本的 CrossWorks 中有点不同,可能需要右键单击并在旧版本中选择属性)。在“用户包含目录”下,您应该有这样的内容:

    $(DeviceIncludePath)
    $(TargetsDir)/NameOfMCU/Include
    $(PackagesDir)/CMSIS_4/CMSIS/Include
    $(ProjectDir)/NameOfDirectory
    

    其中“NameOfMCU”是使用的 MCU 系列的名称,CMSIS 应该在您使用任何 ARM 的情况下,“NameOfDirectory”是您的自定义目录的名称(您可以添加多个)。

另外,在切换到发布版本之前,先让调试版本工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-16
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多