2009-04-04 6 views
1

私はMsysを使用して、私がLinuxで書いたホームBrewカーネルを構築しています。 LinuxはELFをバイナリ形式で使用し、MsysはPEを使用します。マルチブート仕様を使ってGrubで起動できるようにするためのソース設定があります。ビルドの最後には、未定義のシンボルがいくつかあります:カーネルイメージをELFからPEに変換する

init.o:init.S:(.text+0x14): undefined reference to `edata' 

main.o:main.c:(.text+0x121): undefined reference to `_alloca' 

main.o:main.c:(.text+0x126): undefined reference to `__main' 

../../lib\libkern.a(mem.o):mem.c:(.text+0x242): undefined reference to `_end' 

../../lib\libkern.a(mem.o):mem.c:(.text+0x323): undefined reference to `_end' 

これらはELF指向のシンボルのようです。 PEの世界でどのように対処すべきか、誰かが私に助言できるならば。同等のものがあれば、それは私を助けてくれるでしょう!

答えて

0

さまざまなオブジェクトファイル形式を変換するツールがありますが、必要な機能を果たさない可能性があります。

コンパイラ(gcc)をクロスコンパイラとして設定して、Mysys環境の正しいフォーマットを生成する必要があると仮定します。

+0

いいえ、私はカーネルをコンパイルしようとしています。私はelfであるlinuxの下でコンパイルしていますが、今はpeであるmsysでコンパイルを開始したいと考えています。 –

+1

私はあなたがカーネルをコンパイルしているわけではありませんでしたが、コンパイラが実行しているプラ​​ットフォームとは異なるプラットフォームでコンパイルすると、そのターゲットプラットフォーム(あなたのケースではMysys)のクロスコンパイラが必要です。 – lothar

関連する問題