私はUbuntuを使って簡単なカーネルを作成しようとしています。ターミナルでは、私はi386入力ファイルのアーキテクチャはi386と互換性がありません:x86-64
ld -Ttext 0x1000 -o kernel.bin loader.o main.o Video.o
を入力したしかし、私はお返しに、次のエラーメッセージが表示されました:
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
これは解決策でした。 x86_64上で32ビットアプリケーションをコンパイル/リンクする場合、エミュレーションを 'elf_i386'に設定すると正しいelfフォーマットが得られます。たとえば、 'nasm -f elf file.asm -o file.o'を使ってアセンブラアプリケーションをコンパイルすると、リンクコマンドは' ld -m elf_i386 -o exename file.o'になります。 –
'-o file.o file'を' -o file file.o'に置き換えることを忘れないでください。 – Ruslan