DirectFB 1.3.0 を ubuntu 8.04 (VMware上) で動かす : system=sdl (その1)ubuntuには、libdirectfb-1.0-0 がすでに入っています。 ここでは DirectFB を tar ballからinstall しますが、 libdirectfb-1.0-0に依存するものがある場合、それらはどうなるかを確認していません。 試される場合はご自身の責任でお試しください。 VMwareの場合は試す前にスナップショットをとっておくのもよいかもしれません。 system=SDL で動かせるかな? $ dpkg -l | grep sdl ii libsdl1.2debian 1.2.13-1ubuntu1 Simple DirectMedia Layer ii libsdl1.2debian-alsa 1.2.13-1ubuntu1 Simple DirectMedia Layer (with X11 and ALSA sdl の dev 系のパッケージはないようなのでいれる。 $ sudo apt-get install libsdl-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 注意、libsdl-dev の代わりに libsdl1.2-dev を選択します すごい親切ですね。よくできてるなぁ。 libsdl1.2-dev だそうです。 この状態で ./configure する。 Building System Modules: Linux FBDev support yes Generic /dev/mem support yes X11 support yes -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lXext OSX support no SDL support no VNC support no だめですね。 configureの引数に、--enable-sdl=yesを指定 Building System Modules: Linux FBDev support yes Generic /dev/mem support yes X11 support yes -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 -lXext OSX support no SDL support yes -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -lSDL VNC support no よさそうです。 $ make $ make install $ export LD_LIBRARY_PATH=/usr/local/lib ~/.directfbrc に system=sdlとしてdfbinfo実行
$ dfbinfo
~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.3.0 |~~~~~~~~~~~~~~~~~~~~~~~~~~
(c) 2001-2008 The world wide DirectFB Open Source Community
(c) 2000-2004 Convergence (integrated media) GmbH
----------------------------------------------------------------
(*) DirectFB/Core: Single Application Core. (2009-04-14 19:12)
(*) Direct/Thread: Started 'SDL Input' (20584) [INPUT OTHER/OTHER 0/0] <8388608>...
(*) DirectFB/Input: SDL Input 0.1 (Denis Oliver Kropp)
(!) [20583: 0.000] --> Caught signal 11 (at 0x52473a30, invalid address) <--
Aborted
あれ?signal。。。 ~/.directfbrc に system=x11としてdfbinfo実行
$ dfbinfo
~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.3.0 |~~~~~~~~~~~~~~~~~~~~~~~~~~
(c) 2001-2008 The world wide DirectFB Open Source Community
(c) 2000-2004 Convergence (integrated media) GmbH
----------------------------------------------------------------
(*) DirectFB/Core: Single Application Core. (2009-04-14 19:12)
(!) [20573: 0.000] --> Caught signal 11 (at 0x60, invalid address) <--
Aborted
あれれ? 前は動いてたのに。。。 少しおいかけてみよう。 $ ./configure --enable-sdl=yes --enable-debug=yes として、デバッグシンボルもつくってもらう。 コールスタックがとれた。 (gdb) bt #0 0xb7b60145 in glXGetVisualFromFBConfigSGIX () from /usr/lib/libGL.so.1 #1 0xb7cbdf05 in InitLocal (local=0x804d288, x11=0x8051930) at glx_surface_pool.c:197 #2 0xb7f11a76 in init_pool (core=0x8051df0, pool=0x804d188, funcs= #1 の InitLocalという関数の中で、SurfacePoolというものを作ろうとしている。 #0 は glGetVisualFromFBConfigSGIX とでているが、入り口はこの関数↓ XVisualInfo *info24 = glXGetVisualFromFBConfig( local->display, local->config24 ); local->config24 が 0 (null)のために驚いてしまったようだ。 処理をもうすこし前まで含めてみてみた。 local->configs = glXChooseFBConfig( local->display, DefaultScreen(local->display), attribs, &local->num_configs ); D_DEBUG_AT( GLX_Surfaces, " -> found %d configs\n", local->num_configs ); for (i=0; i ↑このコードの、※ここ!というところで local->config24は設定されるはずなのですが、local->num_configs が 0 なので loop の中に入らない。 なぜ glXChooseFBConfig で configが帰ってこないのだろう? glXChooseFBConfig に渡しているパラメータ attribs は、
int attribs[] = {
GLX_DOUBLEBUFFER,
False,
GLX_DRAWABLE_TYPE,
GLX_PIXMAP_BIT,
GLX_X_RENDERABLE,
True,
GLX_RED_SIZE,
8,
GLX_GREEN_SIZE,
8,
GLX_BLUE_SIZE,
8,
GLX_ALPHA_SIZE,
8,
GLX_DEPTH_SIZE,
0,
GLX_X_VISUAL_TYPE,
GLX_TRUE_COLOR,
None
};
と、固定になっている。ubuntu上の FB Configってどんなのがあるんだろう? それは今度調べてみるとして、コードを書き換えずに動かす手段はないかなぁ。。。 いま見ていた関数、InitLocalの呼び元は、
#ifdef USE_GLX
dfb_surface_pool_initialize( core, &glxSurfacePoolFuncs, &shared->glx_pool );
#endif
とかこまれている。 libsdl1.2-devをインストールする前は、USE_GLXは定義されていない。 (別の VMwareイメージで確認) sdl-devをいれたときのメッセージをチェック。 $ sudo apt-get install libsdl1.2-dev パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の特別パッケージがインストールされます: libgl1-mesa-dev libglu1-mesa-dev libglu1-xorg-dev mesa-common-dev 推奨パッケージ: libaa1-dev libartsc0-dev libasound2-dev libaudio-dev libcaca-dev libcucul-dev libdirectfb-dev libesd0-dev libxext-dev libxt-dev 以下のパッケージが新たにインストールされます: libgl1-mesa-dev libglu1-mesa-dev libglu1-xorg-dev libsdl1.2-dev mesa-common-dev アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。 … mesa を入れたからかな? トップページへ |
鮫洲曙町会ホームページ |