Sto provando a creare un kernel semplice utilizzando Ubuntu. Nel terminale ho digitatoL'architettura del file di input i386 non è compatibile con i386: x86-64
ld -Ttext 0x1000 -o kernel.bin loader.o main.o Video.o
Ma ho ottenuto il seguente messaggio di errore in cambio:
ld: i386 architecture of input file `loader.o' is incompatible with i386:x86-64 output
ld: warning: cannot find entry symbol _start; defaulting to 0000000000001000
Questa era la soluzione. Durante la compilazione/collegamento di app a 32 bit su x86_64, l'impostazione dell'emulazione su 'elf_i386' fornisce il formato elfo corretto. Quindi, per esempio, se si compila un'app assembler con 'nasm -f elf file.asm -o file.o', il comando link è' ld -m elf_i386 -o exename file.o'. –
Basta non dimenticare di sostituire '-o file.o file' con' -o file file.o'. – Ruslan