[Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Модератор: Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

[Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Сообщение IMB »

Доброго дня!
Кросс-копиляции glib-2.33.3 останавливается со следующи сообщением:

Код: Выделить всё

  CCLD   gio-querymodules
/opt/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libgthread-2.0.so.0,
needed by ../gobject/.libs/libgobject-2.0.so, not found (try using -rpath or -rpath-link)
./.libs/libgio-2.0.so: undefined reference to `inflateReset'
./.libs/libgio-2.0.so: undefined reference to `inflateEnd'
./.libs/libgio-2.0.so: undefined reference to `inflateGetHeader'
./.libs/libgio-2.0.so: undefined reference to `deflate'
./.libs/libgio-2.0.so: undefined reference to `deflateInit_'
./.libs/libgio-2.0.so: undefined reference to `inflateInit2_'
./.libs/libgio-2.0.so: undefined reference to `inflate'
./.libs/libgio-2.0.so: undefined reference to `deflateSetHeader'
./.libs/libgio-2.0.so: undefined reference to `deflateEnd'
./.libs/libgio-2.0.so: undefined reference to `deflateReset'
./.libs/libgio-2.0.so: undefined reference to `inflateInit_'
./.libs/libgio-2.0.so: undefined reference to `deflateInit2_'
collect2: ld returned 1 exit status
make[5]: *** [gio-querymodules] Error 1

Что странно, так как libgthread-2.0.so.0 входит в состав glib и уже собрана.
Как бы решить эту проблему?
Спасибо.
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: [Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Сообщение TuxWare »

Учитывая
[Решено] Glib: undefined reference to `ffi_type_pointer'
есть подозрение, что Вам к
man pkg-config
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: [Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Сообщение IMB »

Я не имею большого опыта работы с pkg-config, но насколько мне извесно этот механизм используется для сборки кода зависимого от уже установленного.
gthread-2.0.pc

Код: Выделить всё

prefix=/tmp/glib
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: GThread
Description: Thread support for GLib
Requires: glib-2.0
Version: 2.33.3
Libs: -L${libdir} -lgthread-2.0 -pthread -lrt
Cflags: -pthread

Так как никой компонент из собираемого glib ещё не установлен, то и pc-файлы ничем не помогут, так как в прописанных в них координатах ещё ничего нет.
И второй момоент - я же не собираюсь устанавливать собранный пакет в своей системе, мне он нужен на другой машине.
Если Вас не затруднит, не могли бы Вы привести более расширенный пример использования pkg-config для моего случая?
Спасибо.
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: [Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Сообщение TuxWare »

make V=1

Будет разворачивать команды проходящие через make. Последние строки перед ошибкой типа libtool: link: давайте глянем
Я думаю, что pkg-config как раз и заставляет искать библиотеки не в вашей сборке, а системные.

`inflateReset' и прочее это потерялась zlib для arm-а.
Спасибо сказали:
IMB
Сообщения: 2567
ОС: Debian

Re: [Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Сообщение IMB »

Код: Выделить всё

/opt/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I..  -DG_LOG_DOMAIN=\"GLib-GIO\" -I.. -I../glib -I../glib -I.. -I../gmodule -DG_ENABLE_DEBUG -DGIO_COMPILATION -DGIO_MODULE_DIR=\"/tmp/glib/lib/gio/modules\"  -pthread  -g -O2 -Wall -MT gio-querymodules.o -MD -MP -MF .deps/gio-querymodules.Tpo -c -o gio-querymodules.o gio-querymodules.c
mv -f .deps/gio-querymodules.Tpo .deps/gio-querymodules.Po
/bin/sh ../libtool  --tag=CC   --mode=link /opt/arm-2009q1/bin/arm-none-linux-gnueabi-gcc  -g -O2 -Wall   -o gio-querymodules gio-querymodules.o ../glib/libglib-2.0.la ../gobject/libgobject-2.0.la ../gmodule/libgmodule-2.0.la libgio-2.0.la
libtool: link: /opt/arm-2009q1/bin/arm-none-linux-gnueabi-gcc -g -O2 -Wall -o .libs/gio-querymodules gio-querymodules.o  ../glib/.libs/libglib-2.0.so ../gobject/.libs/libgobject-2.0.so ../gmodule/.libs/libgmodule-2.0.so ./.libs/libgio-2.0.so -Wl,-rpath -Wl,/tmp/glib/lib
/opt/arm-2009q1/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld: warning: libgthread-2.0.so.0, needed by ../gobject/.libs/libgobject-2.0.so, not found (try using -rpath or -rpath-link)
./.libs/libgio-2.0.so: undefined reference to `inflateReset'
./.libs/libgio-2.0.so: undefined reference to `inflateEnd'


Проблема решена - собрал все библиотеки с использованием --prefix=<целевая директория> и установил их через make install. Как последствие, чуток "загадилась" файловая система, ну да это легко решаемо.
Спасибо сказали:
Аватара пользователя
TuxWare
Сообщения: 637
ОС: Windows 7

Re: [Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Сообщение TuxWare »

Имеем только
-Wl,-rpath -Wl,/tmp/glib/lib
а должно быть при --prefix=/tmp/glib
... -rpath /tmp/glib/lib ... -Wl,-rpath -Wl,/<каталог сборки>/glib/.libs -Wl,-rpath -Wl,/<каталог сборки>/gthread/.libs ...
и прочее, соответственно Вы намутили с ./configure больше чем нужно и этим самым жестко отрубили поиск библиотек в каталогах сборки.
Спасибо сказали:
pethead
Сообщения: 5

Re: [Решено] Glib: libgthread-2.0.so.0, needed by libgobject-2.0.so

Сообщение pethead »

Не понял как именно решена проблема то. Просто указанием префикса что ли?
Спасибо сказали: