EDKのビルドについて、ゴリゴリ書いてましたが、実はEDKIIなるものがありまして、こちらはまだ良く理解できてないのですが、どうやらEDKIではWindows+VS2003 or VS2005というビルド環境しかサポートしていなかったのが、EDKIIではWindowsの他にLinuxやMacOSXなどのOSもサポートしていて、コンパイラもVisual Studio以外にもgccやインテルCコンパイラもサポートしておるようです。
WindowsよりLinuxの方が好きな私としては大いにそそられるやつなわけです。そんなわけで良く分からんなりにもとりあえず、ビルドしてみました。その一部始終を自分へのメモという意味も含めて書いておこう。おおそうしよう。
まずはリンクから
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK2
http://sourceforge.net/projects/edk2/files/
http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Getting_Started_with_EDK_II
んで、EDKIIのパッケージはなんだか複雑なことになっていてEDKIのようにzip一個というわけでは無いぽいです。モジュールごとに細かいことになっていてどれがなんなのか良く分かりません。しかもSorceforgeにリリースされているソースは中心的なパッケージのみでこれが全てというわけではなさそうです。3つめのリンクにGetting Startedがあるのでこれを参考にやってみました。それによるとソースはsubversionで取得せよちゅうことのようです。
よし取得するべし。そうそう、ビルド環境はUbuntu 10.04でやります。
ターミナルを立ち上げ、まずコンパイラやら、subversionをaptでインストールします、
$ sudo apt-get install build-essential subversion uuid-dev iasl
次にソースをダウンロードするためのディレクトリをホームに作ります。そしてそのディレクトリに移動します。
$ mkdir ~/src
$ cd ~/src
で、svnコマンドでソース一式をダウンロードします。
$ svn co https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2 --username guest
取得が終わったら、ビルドの準備をします。以下のコマンドを実行します。
$ make -C edk2/BaseTools
$ cd ~/src/edk2
$ export EDK_TOOLS_PATH=$HOME/src/edk2/BaseTools
$ . edksetup.sh BaseTools
そして~/src/edk2/Confにあるtarget.txtというファイルを編集してビルドターゲットを指定する。とりあえず、Getting Startedに書いてある通りにしてみる。
ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc
TOOL_CHAIN_TAG = MYTOOLS
と書いてある行を見つけてそれぞれ以下のように変更する
ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc
TOOL_CHAIN_TAG = GCC44
次にビルドする。
$ build
ビルドされたバイナリは「Build/MdeModule/DEBUG_GCC44/IA32/」に出来てます。
んー。思いのほか簡単ですな。ただ、このビルドターゲットだとエミュレータが含まれてないようです。エミュレータ起動しないと今ひとつ感動にかけるし、gdbでデバッグしたいしなので、ごにょごにょ調べてみるとUnixPkgというのをビルドターゲットにすればよさそうです。これを試します。先ほどのtarget.txtのACTIVE_PLATFORMを以下のように書き換えます。
ACTIVE_PLATFORM = UnixPkg/UnixPkg.dsc
これでビルドしてみます。
$ build
するとエラーがでてビルドが通りません。ログをよく見ていくとどうやらX11関係のヘッダファイルが無いよということのようです。なのでUbuntuのパッケージでそれが含まれてそうなパッケージを見つけてインストールします。
$ sudo apt-get install libx11-dev libxext-dev
そしてビルドです。
$ build
こんどは成功しました。で、エミュレータを起動するには以下のようにします。
$ build run
で例のエミュレータが起動します。EDKIとちがってロゴが入ってますねぇ。なかなかいい感じです。
よし。
0 件のコメント:
コメントを投稿