J'essaie de créer un noyau simple en utilisant Ubuntu. Dans le terminal, j'ai tapé
ld -Ttext 0x1000 -o kernel.bin loader.o main.o Video.o
Mais j'ai reçu le message d'erreur suivant en retour:
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
Si vous souhaitez compiler le fichier en 32 bits, vous pouvez utiliser:
ld -m elf_i386 -s -o file file.o
Utilisez 64 bits au lieu de 32 pour votre chargeur et compilez-le avec la commande suivante:
nasm -f elf64 loader.asm -o loader.o
Cela devrait résoudre votre erreur
Lors de la compilation/liaison d'applications 32 bits sur x86_64, définissez l'émulation sur elf_i386
fournit le format elfe correct. Ainsi, par exemple, si vous compilez une application assembleur avec nasm -f elf file.asm -o file.o
, la commande de liaison est ld -m elf_i386 -o exename file.o
Avec l'aimable autorisation de David