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

按GNU ld文档指定输出段类型时遭遇语法错误求助

问题原因及解决方法

你遇到的报错是因为ld 2.34版本对输出段属性的语法位置要求严格:(TYPE = SHT_PROGBITS)这类属性必须直接紧跟在段名称(或可选的VMA地址参数)之后,不能在段名和属性之间插入ALIGN(4K)这类地址修饰符。

你的原写法把ALIGN(4K)放在了段名.bss和属性(TYPE = ...)之间,违反了该版本的语法规则,导致ld解析失败。而测试用例中的写法都是段名后直接跟属性,没有中间插入其他修饰,所以符合语法要求。

正确的写法示例

写法一:简化对齐配置(若VMA和段内小节对齐需求一致)

.bss (TYPE = SHT_PROGBITS) : ALIGN(4K)
{
    *(COMMON)
    *(.bss .bss.*)
}

写法二:保留双重对齐配置(分别指定VMA起始地址和段内小节对齐)

.bss (TYPE = SHT_PROGBITS) ALIGN(4K) : ALIGN(4K)
{
    *(COMMON)
    *(.bss .bss.*)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:10:15