QEMU-0.8.0をビルドして新しいTAPを動かすようにしよう。
QEMUのTAPあたりをデバッグする必要があったのでQEMU-0.8.0をビルドする方法を調べたのでまとめておきます。 方法は、基本的にQEMU同梱のqemu_doc.htmlに従っています。 1.http://www.mingw.org/からMinGW、MSYSをダウンロードしてインストール。(そのときの最新版でよいと思います。) 今日は以下のものが最新でした。 MinGW-5.0.2.exe MSYS-1.0.11-2004.04.30-1.exe 2. SDLをインストール http://www.libsdl.org/からSDL-devel-1.2.9-mingw32.tar.gz をダウンロード・解凍する。 SDL-1.2.9/bin/i386-mingw32msvc-sdl-configを sdl-config として MinGW/binにコピーする。 sdl-configを2箇所修正 prefix=/usr/local/cross-tools/i386-mingw32msvc # これを prefix=c:/qemu-build/SDL-1.2.9 # SDLを解凍したディレクトリ echo -I${prefix}/include/SDL -Dmain=SDL_main # これを echo -I${prefix}/include -Dmain=SDL_main # これに 3. zlibのインストール http://www.zlib.net/あたりから、zlib-1.2.2.tar.gzをダウンロード。 ./configure --prefix=/usr make make install 4. QEMU-0.8.0にパッチを当てる 僕がインストールした、MSYS、MinGWだとなぜか、 include PATHに /usr/includeが入っていないので 適当にパッチをでっち上げました。 qemu-0.8.0-20060220.diff 5.QEMUのbuild パッチを当てたら ./configure make make install で、完成です。 以下余談(愚痴)ですが sdl-configがいったい何なのか分からず苦労しました。 結局、QEMUの./configureにいろいろ埋め込んでデバッグしてやっと分かりました。 sdl-configは sdl-config --libs sdl-config --cflags などとコマンドを打つと SDL のヘッダやライブラリへのパスを含んだ文字列を出力します。 これをコンパイルオプションとして利用しているというからくりなのです。 更にQEMUのconfigureでは、SDLがインストールされているかを調べるために、SDLを使用したCのソースをテンポラリで用意した上で、コンパイルしてみる、という力技をやっています。 cat > $TMPC << EOF #include <SDL.h> #undef main /* We don't want SDL to override our main() */ int main( void ) { return SDL_Init (SDL_INIT_VIDEO); } EOF if $cc -o $TMPE `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /dev/null ; then _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'` if test "$_sdlversion" -lt 121 ; then sdl_too_old=yes なかなかバッドノウハウな感じで楽しかったです。 さて次はTAPパッチを加えてみようかな。 追記: tap, vlanパッチ当てた 追記2: sdl-configの話しで、xx-configはそもそもそういうものだ。と鋭い突込みがあるものの、Linux初心者なので許してね(←勉強しろよ
コメントはありません。 コメント/mones2/22.ネットワークサーバ/09.QEMU-0.8.0をビルドしてみよう?