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

移植GCC1.27时,如何编写Spec添加输出文件至列表但不追加命令?

解决GCC 1.27移植中标记输出文件但不生成命令行内容的问题

针对你移植GCC 1.27到Tektronix 4404平台的需求——要将%w%b.r对应的文件加入输出列表,但不在汇编器命令行中追加相关内容——目前GCC 1.27的原生spec令牌没有直接支持的方法,你需要新增自定义令牌来实现。

原因分析

GCC 1.27中的%w令牌设计是双重作用:一方面将后续的文件名标记为输出文件,另一方面会把该文件名(包括你现有配置里的+o=前缀)直接输出到命令行中。原生没有只做标记、不输出内容的令牌。

实现步骤(新增自定义令牌)

  1. 找到gcc.c中处理spec令牌的代码段(通常在处理转义序列的逻辑里,比如do_spec函数或类似解析spec的部分)。
  2. 新增一个自定义令牌(比如用%W,以大写区分原生%w),处理逻辑为:
    • 解析后续的文件名(比如%b.r)
    • 调用原生%w对应的输出文件记录逻辑,将文件名加入输出列表
    • 不将该文件名输出到命令行
  3. 修改你的汇编器spec,把原来的+o=%w%b.r替换为%W%b.r,调整后的代码如下:
    {!S:asm %{R} %{j} %{J} %{h} %{d2} %a %{gg:-G %g.sym}
                  %g.s %{c:%{!o*:%W%b.r}}%{!c:%W%b.r}
    }
    

临时替代方案(不修改核心逻辑)

如果暂时不想新增令牌,可尝试用空条件块的技巧,但可能产生多余空字符,需测试是否影响汇编器执行:

{!S:asm %{R} %{j} %{J} %{h} %{d2} %a %{gg:-G %g.sym}
                 %g.s %{c:%{!o*:%{:%w%b.r}}}%{!c:%{:%w%b.r}}
}

这种方法可靠性较低,更推荐新增自定义令牌的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:03:37