g-ir-scanner не может сгенерировать gir-файл

Я пытаюсь создать файл .gir из очень простой библиотеки; это в основном пример GObject из документации GLib. При использовании g-ir-scanner происходит сбой со следующей ошибкой:

$ g-ir-scanner -I./ --library=foo --library-path=./ --pkg=gobject-2.0 --namespace=Foo -o foo-bar.gir foo-bar.c foo-bar.h
g-ir-scanner: compile: gcc -Wall -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-         linux-gnu/glib-2.0/include -I./ -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-  2.0/include -c -o /home/roman/Documents/own_gobject/tmp-introspectEx3pzw/Foo-None.o   /home/roman/Documents/own_gobject/tmp-introspectEx3pzw/Foo-None.c
g-ir-scanner: link: gcc -o /home/roman/Documents/own_gobject/tmp-introspectEx3pzw/Foo-None /home/roman/Documents/own_gobject/tmp-introspectEx3pzw/Foo-None.o -L. -Wl,-rpath=. -  lfoo -L./ -Wl,--export-dynamic -pthread -lgio-2.0 -lgmodule-2.0 -lrt -lgobject-2.0 -lglib-2.0
ERROR: can't resolve libraries to shared libraries: foo

Я действительно понятия не имею, что пошло не так. Любые идеи?


person user2018273    schedule 28.01.2013    source источник
comment
Я только что столкнулся с той же проблемой. Вы уже решили это?   -  person Koala Yeung    schedule 13.06.2014


Ответы (2)


Это ошибка в g-ir-scanner (https://bugzilla.gnome.org/show_bug.cgi?id=699442). По сути, foo-bar не содержит классов GObject и не работает. Класс определяется наличием функции foo_blah_get_type().

person Robert Ancell    schedule 02.05.2013

аргументу --library g-ir-scanner требуется имя общего объекта — например, libfoo.so или libfoo.la, если вы используете libtool в своей среде сборки.

person ebassi    schedule 14.02.2013
comment
Когда я пытаюсь это сделать, я получаю: /usr/bin/ld.bfd.real: не могу найти -llibfoo.so Таким образом, --library не должна содержать lib или .so - person Robert Ancell; 02.05.2013
comment
На странице руководства: -i, --library=БИБЛИОТЕКА Указывает библиотеку, которая будет проверена. Это означает, что функции *_get_type() в нем будут вызываться для типов данных GObject. Имя библиотеки не должно содержать начального префикса lib или конечного суффикса общей библиотеки. - person Robert Ancell; 02.05.2013