0

このページに従って、ブートローダーを組み立て、単純なカーネルをコンパイルしてリンクするための作業環境をセットアップしようとしています。ここにリンクの説明を入力してください

これまでのところすべてがうまくいきましたが、このリンカーエラーを回避できないようです。

C:\Users\----\Desktop\>ld -T linker.ld -o kernel.bin --oformat binary loader.o kernel.o
ld: cannot perform PE operations on non PE output file 'kernel.bin'.

私の意見では、古いマニュアルページはあまりにも不可解であり、この特定のエラーメッセージに対する回答はありません。

(私はWindows 7 64ビットを使用しています)

4

1 に答える 1

0

私はその OSDev の記事をいくつか読みましたが、Linux マシン上で行いました。まず、序文の 2 番目の文で、Windows マシンを使用しているため、 GCC クロス コンパイラをセットアップする必要があることを指摘しておきます。しかし、具体的には、PE 出力ファイルに関するエラーはld、Windows と Linux の構成方法に関係していると思います。Linux は実行可能ファイルに ELF 形式を使用しますが、Windows は PE 形式を使用します。これらは、プログラム/実行可能ファイルを表す 2 つの非常に異なる方法です。OSDev チュートリアルでは、カーネルを ELF 形式でリンクする必要があります。

GCC クロス コンパイラの設定に関する記事に従っている場合は、「binutils」の構築に関するセクションに進んでください。ターゲットが i586-elf になるように設定されていることを確認してください。ldこの記事を読み続けると、PE 形式ではなく ELF ターゲットにリンクするようにリンカーを設定できるはずです。

于 2011-06-19T21:49:53.937 に答える