链接描述文件中的语法错误
Syntax error in linker script
我在第 8 行有语法错误
我已阅读有关语法的 GNU docs 并设法解决了语法错误,但遇到了不兼容问题
这是我的脚本:
ENTRY (loader)
OUTPUT ("kernel.bin")
addr = 0x100000;
SECTIONS
{
.text addr:
ALIGN(0x1000)
{
*(.text*);
*(.rodata*);
}
.data:
ALIGN(0x1000)
{
*(.data*);
}
.bss:
ALIGN(0x1000)
{
*(.bss*);
}
}
请原谅,我只是想用一个 Hello World 示例启动 OSDeving
尝试将地址分配给这样的部分:
ENTRY (loader)
OUTPUT ("kernel.bin")
SECTIONS
{
. = 0x100000;
.text:
ALIGN(0x1000)
{
*(.text*);
*(.rodata*);
}
.data:
ALIGN(0x1000)
{
*(.data*);
}
.bss:
ALIGN(0x1000)
{
*(.bss*);
}
}
这是我的链接描述文件在我将内核移至上半部分之前的样子:
OUTPUT_FORMAT("elf32-i386","elf32-i386","elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(entry)
SECTIONS
{
. = 0x00100000;
start = .;
.text :
{
*(.text)
. = ALIGN(4096);
}
.data :
{
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss :
{
*(.bss)
*(stack_bottom)
*(stack_top)
. = ALIGN(4096);
}
end = .;
kernel_end = .;
}
我认为问题在于“.text”和冒号之间缺少 space。对于另一个项目,我曾给我类似的错误。
如果您想指定每个部分的位置,请这样做:
.text : AT(ADDR(.text) - 0xC0000000)
{
*(.text)
. = ALIGN(4096);
}
我在第 8 行有语法错误
我已阅读有关语法的 GNU docs 并设法解决了语法错误,但遇到了不兼容问题
这是我的脚本:
ENTRY (loader)
OUTPUT ("kernel.bin")
addr = 0x100000;
SECTIONS
{
.text addr:
ALIGN(0x1000)
{
*(.text*);
*(.rodata*);
}
.data:
ALIGN(0x1000)
{
*(.data*);
}
.bss:
ALIGN(0x1000)
{
*(.bss*);
}
}
请原谅,我只是想用一个 Hello World 示例启动 OSDeving
尝试将地址分配给这样的部分:
ENTRY (loader)
OUTPUT ("kernel.bin")
SECTIONS
{
. = 0x100000;
.text:
ALIGN(0x1000)
{
*(.text*);
*(.rodata*);
}
.data:
ALIGN(0x1000)
{
*(.data*);
}
.bss:
ALIGN(0x1000)
{
*(.bss*);
}
}
这是我的链接描述文件在我将内核移至上半部分之前的样子:
OUTPUT_FORMAT("elf32-i386","elf32-i386","elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(entry)
SECTIONS
{
. = 0x00100000;
start = .;
.text :
{
*(.text)
. = ALIGN(4096);
}
.data :
{
*(.data)
*(.rodata)
. = ALIGN(4096);
}
.bss :
{
*(.bss)
*(stack_bottom)
*(stack_top)
. = ALIGN(4096);
}
end = .;
kernel_end = .;
}
我认为问题在于“.text”和冒号之间缺少 space。对于另一个项目,我曾给我类似的错误。 如果您想指定每个部分的位置,请这样做:
.text : AT(ADDR(.text) - 0xC0000000)
{
*(.text)
. = ALIGN(4096);
}