首页 > 解决方案 > `.note.gnu.property' 在被丢弃的 `.note.gnu.property' 部分中定义的 `.text' 部分中引用

问题描述

我有文件port.cppport.h.

该代码与此问题无关。我相信,问题在于链接描述文件。

链接描述文件包含以下代码:

ENTRY(loader)
OUTPUT_FORMAT(elf32-i386)
OUTPUT_ARCH(i386:i386)

SECTIONS
{
    . = 0x0100000;

    .text :
    {
        *(.multiboot)
        *(.text*)
        *(.rodata)
    }

    .data :
    {
        start_ctors = .;
        KEEP(*( .init_array ));
        KEEP(*(SORT_BY_INIT_PRIORITY( .init_array.* )));
        end_ctors = .;

        *(.data)
    }

    .bss :
    {
        *(.bss)
    }
    
    /DISCARD/ : 
    {
        *(.fini_array*)
        *(.comment)
    }   
}

当我ld使用唯一的标志运行时,-melf_i386我得到了这个错误:

`.note.gnu.property' referenced in section `.text' of port.o: defined in discarded section `.note.gnu.property' of port.o

我相信问题出在链接器上,但即使在阅读ld文档之后,查看正在生成的汇编代码并添加KEEP(*( .note.gnu.property ));我也无法修复它。

标签: gnuld

解决方案


推荐阅读