У меня проблема. Я скомпилировал файл 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*)
}
}
Поэтому я хочу начать компоновку, и я использую g ++ для Windows, и я использую эти команды в cmd: ld -T linker.ld -o kernle.bin main.o boot.o
. И отклоняет мне ошибку: ld: cannot preform PE operations on non PE output file kernel.bin
. Кто-нибудь знает, как я могу его починить? Пожалуйста, помогите мне.