В Птн, 30/12/2005 в 11:18 +0200, Andrei Bulava пишет: > $ libgnutls-config --libs > -lgnutls -ltasn1 -lgcrypt -lgpg-error > > $ gcc `libgnutls-config --libs` test.c > /usr/bin/ld: cannot find -ltasn1 > collect2: ld returned 1 exit status > > (понятно, что у меня не оказалось libtasn1-devel - она ведь не > вытягивается при установке libgnutls-devel). > > С другой стороны: > > $ pkg-config --libs gnutls > -lgnutls > > $ gcc `pkg-config --libs gnutls` test.c > > $ objdump -p a.out |grep NEEDED|awk '{ print $2 }' > libgnutls.so.12 > libc.so.6 > > Получается, что программы и библиотеки, которые хотят линковаться с > libgnutls, получат разный список сборочных зависимостей при > использовании разных инструментов: libgnutls-config или pkg-config. > > Как не трудно догадаться, мне попалась библиотека, в configure-скрипте > которой использовался libgnutls-config в расчёте на совместимость с теми > (старыми) версиями libgnutls, где ещё не было gnutls.pc. > > У меня есть вполне резонное подозрение, что неправ libgnutls-config и > прав pkg-config: зачем мне линковаться с абсолютно "левыми" > библиотеками, об объектах из которых в test.c нет ни одного упоминания? > Если я правильно понимаю, о возможности загрузки библиотеки libgnutls > должна беспокоиться сама библиотека, а не каждый слинкованный с ней elf. > > Или я неверно понимаю теорию на практике, и прав libgnutls-config? Теоретически, флаги от -config годятся и для статической линковки. pkg-config в последних версиях умеет различать между статической и динамической сборкой. Правда, в gnutls.pc все равно нет поля Libs.private, но Libs явно написан только для динамического случая. 2ldv: Кстати, не тестировался ли мой новый pkg-config на совместимость с пакетами в Sisyphus? > Однако ошибка имеет место быть в любом случае, т.к. правота > libgnutls-config должна подтверждаться списком зависимостей > libgnutls-devel, который сейчас вообще ни рыба, ни мясо: > > $ rpm -qR libgnutls-devel|grep devel > libgcrypt-devel >= 1.2.2 Пожалуй, libgcrypt-devel там не место, если он не используется в динамической сборке.