#gnu #ld
Вопрос:
У меня есть файлы port.cpp
и port.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 ));
я не смог его исправить.