You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Ceedling解决多测试文件与工具代码的链接未定义问题

解决Ceedling测试链接时utility.c符号未定义的问题

问题根因

执行ceedling test:foo时,Ceedling默认只会编译并链接test/test_foo.c、对应业务源文件及mock文件,不会自动包含同目录下的utility.c,导致链接阶段找不到该文件里的符号。

两种可行解决方案

方案一:直接指定测试额外源文件

在现有YAML配置中新增:test_build:节点,明确把utility.c加入测试编译的源文件列表:

:paths:
  :test:
    - +:test/**
    - -:test/support
  :source:
    - ../../src/**
  :include:
    .. my dependency for mocking
  :support:
    - test/support
  :libraries: []

# 新增配置:告诉Ceedling编译测试时要带上utility.c
:test_build:
  :sources:
    - test/utility.c

方案二:将工具代码归类到支持目录(更规范)

如果utility.c是纯测试辅助代码,可以按Ceedling的规范把它放到test/support目录下,再调整配置让Ceedling自动编译该目录的文件:

  1. 移动文件:把test/utility.c、test/utility.h移到test/support目录下
  2. 修改配置:
:paths:
  :test:
    - +:test/**
    - -:test/support
  :source:
    - ../../src/**
  :include:
    - test/support  # 新增:让测试文件能找到support目录下的头文件
    .. my dependency for mocking
  :support:
    - test/support/**  # 修改为包含support下所有文件
  :libraries: []

验证

改完配置后重新执行ceedling test:foo,链接器会自动编译并关联utility.c的目标文件,符号未定义的问题就能解决。

内容的提问来源于stack exchange,提问作者user28737532

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:02:06