DirectFB on cygwin(その6)

DirectFB on cygwin(その6)

DirectFBをデバッグ版でコンパイルして追ってみる
$ ./configure --enable-network=no --enable-debug=yes
(!) DirectFB/core/system: No system found!
を出しているのは、
src/core/system.c:102:          D_ERROR("DirectFB/core/system: No system found!\n");
とのこと。失敗の原因をたぐっていこう。

dfb_system_lookup という関数は、
dfb_system_lookup()
{
     DirectLink *l;

     direct_modules_explore_directory( &dfb_core_systems ); ※1

     direct_list_foreach( l, dfb_core_systems.entries ) {
        …※2
     }

     if (!system_module) {
          D_ERROR("DirectFB/core/system: No system found!\n");

          return DFB_NOIMPL;
     }
の※2で、system_module に情報が取得されるはずなのだけど、
dfb_core_systems.entries が0のためLoopの中に入らず
system_module になにも取得されていない。
(gdb) bt
#0  dfb_system_lookup () at system.c:78
#1  0x004112af in dfb_core_create (ret_core=0x22cc18) at core.c:245
#2  0x00401bfb in DirectFBCreate (interface=0x491040) at directfb.c:193
#3  0x00401091 in main (argc=1, argv=0x8315b0) at simple.c:96
(gdb) p dfb_core_systems
$15 = {lock = 0x14, path = 0x484608 "/usr/local/lib/directfb-1.0-0/systems",
  abi_version = 9, entries = 0x0, loading = 0x0}
/usr/local/lib/directfb/systems の下をみてみると、
$ ls /usr/local/lib/directfb-1.0-0/systems/
libdirectfb_x11.a  libdirectfb_x11.la  libdirectfb_x11.o
それっぽいのがあるじゃあないですか。これじゃだめなのかな?

direct_modules_explore_directory の処理をみてみる。
#ifdef DYNAMIC_LINKING の場合、末尾が so のファイルを探している。
確かに上の3つのファイルはどれも該当しない。

#ifdef DYNAMIC_LINKING でない場合は、dfb_core_systems の中身は変更されないようだ。
あれ?これだと static link にした場合はどうなるんだろ?
結局同じような失敗で終わってしまいそうな気がするけど、そもそもここは通らないんだろうか?


それと、/usr/local/lib/directfb-1.0-0/systems/ にあった、
拡張子 'la' ってなんだろう?
中身をみてみるとテキストファイルのようです。
$ less libdirectfb_x11.la
# libdirectfb_x11.la - a libtool library file
# Generated by ltmain.sh - GNU libtool 1.5.23b (1.1220.2.437 2007/02/17 09:08:45)
#
# Please DO NOT delete this file!
# It is necessary for linking the library.

# The name that we can dlopen(3).
dlname=''

# Names of this library.
library_names=''

# The name of the static archive.
old_library='libdirectfb_x11.a'

# Libraries that this one depends upon.
dependency_libs=' -L/usr/X11R6/lib -lX11 -lXext /usr/local/lib/libdirectfb.la /u
sr/local/lib/libfusion.la /usr/local/lib/libdirect.la -lz -lpthread'

# Version information for libdirectfb_x11.
current=0
age=0
revision=0

# Is this an already installed library?
installed=yes

# Should we warn about portability when linking against -modules?
shouldnotlink=yes

# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''

# Directory that this library needs to be installed in:
libdir='/usr/local/lib/directfb-1.0-0/systems'
(END)
これはなんだろう?

なぞは深まるばかりです。




トップページへ




鮫洲曙町会ホームページ