On Thu, Mar 09, 2006 at 07:22:30PM +0400, Sergey Y. Afonin wrote: > При сборке всё еще имеют место две проблемы. > > Первая: > > при --enable-snmp вылезает вот такой набор ошибок: > > gcc -pipe -Wall -O2 -march=i686 -rdynamic -o .libs/zebra zserv.o main.o interface.o connected.o zebra_rib.o redistribute.o debug.o rtadv.o zebra_snmp.o zebra_vty.o irdp_main.o irdp_interface.o irdp_packet.o router-id.o ioctl.o ipforward_proc.o if_netlink.o rt_netlink.o rtread_netlink.o ../lib/.libs/libzebra.so -lm -lcrypt -lnetsnmp -lcrypto > /usr/bin/../lib/libnetsnmp.so.9: undefined reference to `EVP_DigestInit' > /usr/bin/../lib/libnetsnmp.so.9: undefined reference to `EVP_DigestFinal' > /usr/bin/../lib/libnetsnmp.so.9: undefined reference to `EVP_DigestFinal_ex' > /usr/bin/../lib/libnetsnmp.so.9: undefined reference to `AES_set_encrypt_key' > /usr/bin/../lib/libnetsnmp.so.9: undefined reference to `EVP_md5' > /usr/bin/../lib/libnetsnmp.so.9: undefined reference to `HMAC' > > или -lm должно быть еще и после -l* ? Но при сборке без hasher на > текущем Сизифе не воспроизводится... ldd -r /usr/lib/libnetsnmp.so.9 показывает, что эта библиотека собрана криво (при сборке пропущено -lcrypto). Нужно лечить пакет net-snmp (ну или пока собирать без --enable-snmp). > Вторая: > > Adjusting library links in /usr/src/tmp/quagga-buildroot > ./var/lib: > ./usr/lib: > libospfapiclient.so.0 -> libospfapiclient.so.0.0.0 > libospf.so.0 -> libospf.so.0.0.0 > libzebra.so.0 -> libzebra.so.0.0.0 > Verifying ELF objects in /usr/src/tmp/quagga-buildroot (arch=normal,fhs=relaxed,rpath=normal,textrel=normal,unresolved=relaxed) > verify-elf: WARNING: ./usr/lib/libzebra.so.0.0.0: undefined symbol: master > verify-elf: WARNING: ./usr/lib/libospf.so.0.0.0: undefined symbol: no_interface_desc_cmd > verify-elf: WARNING: ./usr/lib/libospf.so.0.0.0: undefined symbol: no_interface_cmd > verify-elf: WARNING: ./usr/lib/libospf.so.0.0.0: undefined symbol: recent_time > <и т.д.> > > %set_verify_elf_method unresolved=relaxed > ситуацию спасает, оно, потом, работает. Ввиду малого современного > программистского опыта готов выслушать, куда попытаться посмотреть. Нужно посмотреть, где на самом деле определены недостающие символы (nm -D, findsym). Если в других библиотеках - необходимо указать их при сборке. Впрочем, ELF допускает и вариант, когда библиотека использует символы, предоставляющиеся исполняемым файлом - в таком случае остаётся либо проигнорировать проблему, либо разбираться, зачем это было нужно, и искать другой способ реализации, не требующий подобных ссылок.