gpt4 book ai didi

c++ - 将文件链接到内核时出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:04 24 4
gpt4 key购买 nike

我有问题。我已经编译了文件 boot.o:

[BITS 16]   
[ORG 0x7C00]
[global start]
[extern _main]
start:
call _main
cli
hlt

编译后的C++文件main.o:

 int main(){
//processes
}

我正在使用这个 LD 文件 linker.ld 进行链接:

OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
. = 0x100000;

.text ALIGN(4096) :
{
*(.text*)
*(.gnu.linkonce.t*)
}

.rodata ALIGN(4096) :
{
start_ctors = .;
*(.ctor*)
end_ctors = .;

start_dtors = .;
*(.dtor*)
end_dtors = .;

*(.rodata*)
*(.gnu.linkonce.r*)
}

.data ALIGN(4096) :
{
*(.data*)
*(.gnu.linkonce.d*)
}

.bss ALIGN(4096) :
{
*(.COMMON*)
*(.bss*)
*(.gnu.linkonce.b*)
}

}所以我想开始链接,我在 windows 上使用 g++,我在 cmd 中使用这个命令:ld -T linker.ld -o kernle.bin main.o boot.o。并拒绝我的错误:ld: 无法对非 PE 输出文件 kernel.bin 执行 PE 操作。有谁知道我该如何修复它?请帮助我。

最佳答案

也许 -oformat bin?

而且我怀疑您是否能够启动它,无论如何...去阅读一些引导加载程序教程(在 osdev.org 和 brokenthorn.com 上),您会得到原因的答案。

关于c++ - 将文件链接到内核时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6854799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com