[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