Привет. 11 июня 2010 г. 23:10 пользователь Алексей Шенцев написал: > Всем привет! > Пытаюсь собрать nut-2.4.3. Обламываюсь на ./configure с такой руганью: > checking whether to build serial drivers... yes > configure: error: "Net-SNMP libraries not found, required for SNMP drivers" > > установлены: > rpm -qa | grep snmp | sort > libnet-snmp2-5.5-alt3 > libnet-snmp-5.4.2.1-alt5 > libnet-snmp-devel-5.5-alt3 > libnet-snmp-devel-static-5.5-alt3 > libucd-snmp2-5.5-alt3 > libucd-snmp-5.4.2.1-alt5 > libucd-snmp-devel-5.5-alt3 > libucd-snmp-devel-static-5.5-alt3 > net-snmp-5.5-alt3 > тet-snmp-utils-5.5-alt3 > snmp-mibs-std-0.3-alt1 > > Каких пакетов не хватает? > Вопрос поставлен некорректно. Без детального разбора configure.in и очередного велосипеда m4/nut_check_libnetsnmp.m4, в этом проекте, что-то вразумительное сказать сложно. Как минимум, требовалось показать вывод ./configure --with-snmp: .... checking for Net-SNMP version via net-snmp-config... 5.4.2.1 found checking for Net-SNMP cflags... -pipe -Wall -O2 -march=i586 -mtune=i686 -Ulinux -Dlinux=linux -I/usr/include/rpm -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include checking for Net-SNMP libs... -lcrypto -lnetsnmp checking for net-snmp/net-snmp-config.h... yes checking for init_snmp... no ... А также config.log: ... configure:7937: checking for init_snmp configure:7937: gcc -o conftest -pipe -Wall -O2 -march=i586 -mtune=i686 -Ulinux -Dlinux=linux -I/usr/include/rpm -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing - pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include -lcrypto -lnetsnmp conftest.c >&5 /home/sin/tmp/cc1QhzbR.o: In function `main': conftest.c:(.text+0x7): undefined reference to `init_snmp' collect2: ld returned 1 exit status configure:7937: $? = 1 ... Проверяем. Копируем в файлик тестовый код из config.log (файлик прилагаю): .... char init_snmp (); int main () { return init_snmp (); ; return 0; } Пробуем собрать: $ gcc -o conftest -pipe -Wall -O2 -march=i586 -mtune=i686 -Ulinux -Dlinux=linux -I/usr/include/rpm -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include -lcrypto -lnetsnmp init_snmp.c /home/sin/tmp/cc1kacWf.o: In function `main': init_snmp.c:(.text+0x7): undefined reference to `init_snmp' collect2: ld returned 1 exit status Пробуем собрать правильно: $ gcc -o conftest -pipe -Wall -O2 -march=i586 -mtune=i686 -Ulinux -Dlinux=linux -I/usr/include/rpm -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -I/usr/lib/perl5/i386-linux/CORE -I. -I/usr/include init_snmp.c -lcrypto -lnetsnmp Сработало... И вот теперь самый главный вопрос, с которого стоило начинать. Почему проверка вида: AC_CHECK_FUNCS(init_snmp, [], [nut_have_libnetsnmp=no]) в файле m4/nut_check_libnetsnmp.m4 ставит $LDFLAGS в строке сборки перед компилируемым файлом, а не после? С другой стороны, может быть так оно всегда и было? Может это так гайки в gcc у нас закручены? Насколько мне известно гайки у нас уже давно закручены. И, начиная с этого момента, мне уже не совсем понятно что нужно чинить. Сам nut или какие-то детали autotools. -- Sin (Sinelnikov Evgeny)