nordic undefined reference to `stdout‘,

一. 陈述问题

在使用segger embedded studio(IDE)开发nordic 52840过程中,我们编译出现了如下错误:

E:/Program/SES/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(fileops.o): in function `putchar':

    fileops.c:(.text.libc.putchar+0x0): undefined reference to `stdout'

    fileops.c:(.text.libc.putchar+0x4): undefined reference to `stdout'

    E:/Program/SES/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(fileops.o): in function `puts':

    fileops.c:(.text.libc.puts+0x2): undefined reference to `stdout'

    fileops.c:(.text.libc.puts+0x6): undefined reference to `stdout'

    fileops.c:(.text.libc.puts+0x18): undefined reference to `__SEGGER_RTL_X_file_write'

    E:/Program/SES/lib/libc_v7em_fpv4_sp_d16_hard_t_le_eabi_balanced.a(fileops.o): in function `fwrite':

    fileops.c:(.text.libc.fwrite+0xc): undefined reference to `__SEGGER_RTL_X_file_stat'

    fileops.c:(.text.libc.fwrite+0x24): undefined reference to `__SEGGER_RTL_X_file_write'

Build failed

二. 分析问题

通过编译错误简单分析得知,有相关的函数或标识符未定义。

三. 解决问题

1. 在segger和noridc论坛查到相关参考资料:

:1.1. nRF5 SDK 17.1.0 示例未在最新的 SES (6.20a) 中编译 - 北欧问答 - 北欧开发区 - 北欧开发区 (nordicsemi.com)

1.2. 构建环境问题 - Nordic Q&A - Nordic DevZone - Nordic DevZone (nordicsemi.com)

1.3. Build Environment Problem - Nordic Q&A - Nordic DevZone - Nordic DevZone (nordicsemi.com)

2. 通过上面的参考资料得知,相关函数没有定义,重新定向即可。

2.1. project - options - private configuration - common

        2.1.1. Code -  Library - Library I/O,  由none修改为RTT。

PS:

1. segger embedded studio的项目管理是从空间范围大小依次solution > Project > file folder > file.简单说solution下面可以有多个project,project下面的结构则跟MDK keil是一样的。未在指定级别上做修改的所有选项都将继承自上层,这样就可以在一个级别上修改某些选项,例如定义、包含目录或优化级别,同时保留所有其他选项。

所以在选择的时候一定需要注意选择project。

2. solution和project下面有不同的configuration。

solution有Public Configuration,Private Configuration 和 Loader Configuration 配置。

project有Public Configuration(debug、release),Private Configuration(common)。

可以在一个地方设置默认和共享选项。然后,可以根据构建配置设置或覆盖特定选项。 这就是“私有配置”和“公共配置”的用途。 公共配置是构建配置。可以选择和构建它,并生成输出。 无法构建私有配置。相反,公共配置可以继承一个或多个私有配置中设置的选项。 这样,所有构建配置(“Debug”和“Release”)都可以从相同的私有配置(“Common”)继承共享选项。 目标处理器,包括目录,...,只需在“Common”中设置,并在“Debug”和“Release”中使用。

参考资料:

Configurations and project options (segger.com)

嵌入式工作室 - SEGGER Wiki

  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值