[devel] [sisyphus] dbmail-2.2.4
Eugene Prokopiev
=?iso-8859-1?q?prokopiev_=CE=C1_stc=2Edonpac=2Eru?=
Вс Апр 1 14:24:28 MSD 2007
> gcc -g -O2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
> -I/usr/include/gmime-2.0 -I/usr/include/glib-2.0
> -I/usr/lib/glib-2.0/include -W -Wall -Wpointer-arith -Wstrict-prototypes
> -o .libs/dbmail-smtp main.o -Wl,--export-dynamic -lcrypt -lgmime-2.0
> -lz -lnsl -lgobject-2.0 -lglib-2.0 ./.libs/libdbmail.so -lldap
> -Wl,--rpath -Wl,/usr/local/lib/dbmail
> ./.libs/libdbmail.so: undefined reference to `g_module_build_path'
> ./.libs/libdbmail.so: undefined reference to `g_module_symbol'
> ./.libs/libdbmail.so: undefined reference to `g_module_supported'
> ./.libs/libdbmail.so: undefined reference to `g_module_open'
> ./.libs/libdbmail.so: undefined reference to `g_module_error'
> collect2: ld returned 1 exit status
> make[2]: *** [dbmail-smtp] Error 1
>
> Ищем, что прилинковать:
>
> $ find -name *.so | xargs grep g_module_build_path
> Binary file ./.libs/libdbmail.so matches
> $ nm -CD ./.libs/libdbmail.so | grep g_module_build_path
> U g_module_build_path
>
> Итак, у нас в коде нет библиотек, экспортирующих g_module_build_path,
> поэтому таковые следует искать в /usr/lib, в нашем случае это
> libgmodule-2.0.so, т.е. дописывать надо -lgmodule-2.0
>
> Ищем, куда дописывать:
>
> $ find -name Makefile.am | xargs grep libdbmail_la_LIBADD
> ./Makefile.am:libdbmail_la_LIBADD = @MYSQLLTLIB@ @PGSQLLTLIB@
> @SQLITELTLIB@ @SORTLTLIB@ @AUTHLTLIB@
Дописывание -lgmodule-2.0 в AM_LDFLAGS в Makefile.am и
autoreconf -fisv
./configure --with-mysql --with-pgsql --with-auth-ldap --with-sieve
make
проходят без ошибок. Дописывание -lgmodule-2.0 в libdbmail_la_LIBADD в
Makefile.am приводит к undefined reference. Почему? Куда и в каких
случаях положено добавлять недолинкованные библиотеки?
--
С уважением, Прокопьев Евгений
Подробная информация о списке рассылки Devel