cargo build出现的虚拟内存重叠问题

今天在cargo buiild编译项目时出现问题:

rust-lld: error: section .rodata..L__unnamed_83 virtual address range overlaps with .text._ZN4core3ptr5write17hde8e01753aaa44ebE
          >>> .rodata..L__unnamed_83 range is [0x40084CD8, 0x40084D1F]
          >>> .text._ZN4core3ptr5write17hde8e01753aaa44ebE range is [0x40084D10, 0x40084D33]

报了一堆这种错误

我的.ld文件如下:

ENTRY(_start)
SECTIONS
{
    . = 0x40080000;
    .text.boot : { *(.text.boot) }
    .text :
    {
      KEEP(*(.text.boot))
      *(.text.exceptions)
      . = ALIGN(4096); /* align for exceptions_vector_table*/
      *(.text.exceptions_vector_table)
      *(.text)
    }
    .data : { 
      *(.data) 
    }
    .rodata : { 
      *(.rodata)
    }
    .bss : { 
      *(.bss) 
    }

    . = ALIGN(8);
    . = . + 0x4000;
    LD_STACK_PTR = .;
}

在网上查阅资料未果,问gpt得到的答案是没有text段没对齐,但是用. = ALIGN(8);对齐了之后也是一样的问题。

研究了半天,感觉还是内存段分配不足导致的,尝试修改. = . + 0x4000;为. = . + 0xA000;后发现问题解决了,感觉有点神奇。

由于对系统理解较浅,暂不清楚具体原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值