2012-03-18 29 views
1

試圖將測試添加到gobject-introspection測試套件中以涵蓋更多功能並瞭解代碼。 想創建一個簡單的測試,從libgirepository_internals.a創建一個對象,但有問題的鏈接, 想知道是否有人可以給我一些建議嗎?GObjectIntrospection鏈接到libgirepository-internals和libgirepository-1.0

代碼在這裏,https://github.com/h4ck3rm1k3/gobject-introspection它是主git://git.gnome.org/gobject-introspection添加一些測試的簡單分支。

爲GObjectIntrospection該項目頁面http://live.gnome.org/GObjectIntrospection

未連接的測試模塊是: https://github.com/h4ck3rm1k3/gobject-introspection/blob/master/tests/repository/gitestenum.c

我所做的只是添加一些額外的lib:

$(top_builddir)/libgirepository-internals.la 
gitestenum_SOURCES = $(srcdir)/gitestenum.c 
gitestenum_CPPFLAGS = $(GIREPO_CFLAGS) -I$(top_srcdir)/girepository 
gitestenum_LDADD = $(top_builddir)/libgirepository-1.0.la $(top_builddir)/libgirepository-internals.la $(top_builddir)/libgirepository-gthash.la $(GIREPO_LIBS) 

這裏是編譯器錯誤:

CCLD gitestenum 
../../.libs/libgirepository-internals.a(libgirepository_internals_la-girnode.o): In   function `_g_ir_node_get_full_size_internal': 
gobject-introspection/girepository/girnode.c:629: undefined reference to   `g_type_tag_to_string' 
../../.libs/libgirepository-internals.a(libgirepository_internals_la-girnode.o): In function `serialize_type': 
gobject-introspection/girepository/girnode.c:1198: undefined reference to `g_type_tag_to_string' 
../../.libs/libgirepository-internals.a(libgirepository_internals_la-girmodule.o):   In function `_g_ir_module_build_typelib': 
gobject-introspection/girepository/girmodule.c:548: undefined reference to   `g_typelib_new_from_memory' 
../../.libs/libgirepository-internals.a(libgirepository_internals_la-giroffsets.o):   In function `get_type_size_alignment': 
gobject-introspection/girepository/giroffsets.c:300: undefined reference to   `gi_type_tag_get_ffi_type' 
../../.libs/libgirepository-internals.a(libgirepository_internals_la-giroffsets.o): In function `get_enum_size_alignment': 
gobject-introspection/girepository/giroffsets.c:174: undefined reference to `g_type_tag_to_string' 
../../.libs/libgirepository-internals.a(libgirepository_internals_la-giroffsets.o):   In function `get_type_size_alignment': 
gobject-introspection/girepository/giroffsets.c:311: undefined reference to `g_type_tag_to_string' 

什麼是困擾我的是,符號有:

gobject-introspection/.libs$ nm libgirepository-1.0.so | grep g_type_tag_to_string 
    0000f0c0 T g_type_tag_to_string 

gobject-introspection/.libs$ nm libgirepository-1.0.a | grep g_type_tag_to_string 
    U g_type_tag_to_string 
    00001e00 T g_type_tag_to_string 
      U g_type_tag_to_string 

這裏是內部連接器命令 /usr/lib/gcc/i686-linux-gnu/4.6.1/collect2 --build-id --no-add-needed --as-needed --eh-frame-hdr -m elf_i386 --hash-style=gnu -dynamic-linker /lib/ld-linux.so.2 -z relro -o .libs/gitestenum /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/4.6.1/crtbegin.o -L/usr/lib/gcc/i686-linux-gnu/4.6.1 -L/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib -L/lib/i386-linux-gnu -L/lib/../lib -L/usr/lib/i386-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/i686-linux-gnu/4.6.1/../../.. gitestenum-gitestenum.o --export-dynamic ../../.libs/libgirepository-1.0.so ../../.libs/libgirepository-internals.a -lm -ldl /usr/lib/i386-linux-gnu/libgio-2.0.so /usr/lib/i386-linux-gnu/libgmodule-2.0.so -lffi /usr/lib/i386-linux-gnu/libgobject-2.0.so /usr/lib/i386-linux-gnu/libgthread-2.0.so -lrt /usr/lib/i386-linux-gnu/libglib-2.0.so -lgcc --as-needed -lgcc_s --no-as-needed -lpthread -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i686-linux-gnu/4.6.1/crtend.o /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/crtn.o

感謝, 麥克

此消息被髮布到郵件列表: [email protected]但正在等待審覈,我在這裏發佈以獲得快速幫助。 此消息發佈到GTK devel的列表http://mail.gnome.org/archives/gtk-devel-list/2012-March/msg00060.html

回答