2016-10-07 8 views
-18

私は現在、OSDevのBare Bonesチュートリアルに従っています。すべてをセットアップし、カーネルとブートローダをオブジェクトファイルにコンパイルしました。私は.ldファイルを持っています。私はファイルをリンクしてi686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -O2 -nostdlib boot.o kernel.o -lgccを使用してビンにそれを生産しようとすると、しかし、私はこのエラーを取得:linker.ldをリンクできません

.../i686/bin/../lib/gcc/i686-elf/4.8.2/../../../../i686-elf/bin/ld.exe: cannot open linker script file linker.ld 

collect2.exe: error: ld returned 1 exit status 

私はGCCを使用して、より多くのコンパイラが含まれてi686のエルフ - gccのコンパイル済みのバージョンを使用しています私は4つのdllが欠けていたので(リンカにも関係ない)、MinGWをインストールして追加しました。私はWindows 10 x64を使用しています。私が見つけた解決策や回避策の多くは、より多くのエラーを引き起こしたり、エラーに絶対に何もしません(-Tは何もしません。-noixemulはパラメータではありません)。私はオブジェクトファイルをロードするセクタ長のブートローダを使うつもりなので、マルチブートのコンテンツを削除しました。

+0

gccの完全な出力は確実でしたか? –

+0

ファイルが存在するかどうかを確認する...リンカがリンカスクリプトをどこで検索しているかのような追加情報については、 '-Wl、 - verbose'を試してみてください...ファイルがある場合、' ls -al '助けてくれるかもしれない – theadnangondal

答えて

1

私は間違っていない場合は、あなたの問題は本当に、本当に本当にシンプル:

あなたはlinker.ldにアクセスすることはできません。スーパーユーザーとして実行するか、権限を変更してみてください。

これで解決できない場合は、実際に問題があります。 -Tフラグを使用しないでください。

編集:親愛なる神、私はこれが正しいとは思わなかった。ありがとう!

+1

これは悪い、恐らく危険な解決策です。現在のユーザ_does_がそのファイルを読む権限を持つように、単に 'chmod'または' chown''を 'linker.ld'するのが良いでしょう。 **これらのファイルのアクセス権以外に、リンカーをrootとして実行する理由はありません!** – Xunie

+2

ああ、かなりOPは彼がWindows 10であると言っていました。 –

+0

@Xunieが更新されました。 – Blacksilver

関連する問題