LINUX.ORG.RU

Ошибка при компиляции libpcap

 , ,


0

1

Доброго времени суток! Имееться Raspberry Pi с арчем на борту, нужно скомпилировать libpcap 1.3.0. Делаю всё как положено:

./configure --prefix=/usr

[root@alarmpi libpcap-1.3.0]# ./configure --prefix=/usr
checking build system type... armv6l-unknown-linux-gnueabi
checking host system type... armv6l-unknown-linux-gnueabi
checking target system type... armv6l-unknown-linux-gnueabi
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking gcc version... 4
checking for inline... inline
checking for __attribute__... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/bitypes.h usability... yes
checking sys/bitypes.h presence... yes
checking for sys/bitypes.h... yes
checking for int8_t... yes
checking for u_int8_t... yes
checking for int16_t... yes
checking for u_int16_t... yes
checking for int32_t... yes
checking for u_int32_t... yes
checking for int64_t... yes
checking for u_int64_t... yes
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... 64
checking for _LARGEFILE_SOURCE value needed for large files... no
checking sys/ioccom.h usability... no
checking sys/ioccom.h presence... no
checking for sys/ioccom.h... no
checking sys/sockio.h usability... no
checking sys/sockio.h presence... no
checking for sys/sockio.h... no
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking paths.h usability... yes
checking paths.h presence... yes
checking for paths.h... yes
checking linux/types.h usability... yes
checking linux/types.h presence... yes
checking for linux/types.h... yes
checking linux/if_packet.h usability... yes
checking linux/if_packet.h presence... yes
checking for linux/if_packet.h... yes
checking netpacket/packet.h usability... yes
checking netpacket/packet.h presence... yes
checking for netpacket/packet.h... yes
checking netpacket/if_packet.h usability... no
checking netpacket/if_packet.h presence... no
checking for netpacket/if_packet.h... no
checking for net/pfvar.h... no
checking for netinet/if_ether.h... yes
checking for ANSI ioctl definitions... yes
checking for strerror... yes
checking for strlcpy... no
checking for vsnprintf... yes
checking for snprintf... yes
checking for library containing gethostbyname... none required
checking for library containing socket... none required
checking for library containing putmsg... none required
checking for ether_hostton... yes
checking whether ether_hostton is declared... no
checking netinet/ether.h usability... yes
checking netinet/ether.h presence... yes
checking for netinet/ether.h... yes
checking whether ether_hostton is declared... yes
checking if --disable-protochain option is specified... enabled
checking packet capture type... linux
checking for linux/wireless.h... yes
checking for nl_socket_alloc in -lnl... no
checking for nl_handle_alloc in -lnl... no
checking for linux/ethtool.h... yes
checking if if_packet.h has tpacket_stats defined... yes
checking if tpacket_auxdata struct has tp_vlan_tci member... yes
checking for getifaddrs... yes
checking ifaddrs.h usability... yes
checking ifaddrs.h presence... yes
checking for ifaddrs.h... yes
checking for socklen_t... yes
checking for getaddrinfo... yes
checking whether to build optimizer debugging code... no
checking whether to build parser debugging code... no
checking whether we have DAG API headers... no (/usr/local/include)
checking whether we have the DAG API... no
checking whether we have Septel API... no
checking whether we have Myricom Sniffer API... no (/opt/snf)
checking for flex... flex
checking for flex 2.4 or higher... yes
checking for bison... bison
checking for ranlib... ranlib
checking for ar... ar
checking if sockaddr struct has the sa_len member... no
checking if sockaddr_storage struct exists... yes
checking if dl_hp_ppa_info_t struct has dl_module_id_1 member... no
checking if unaligned accesses fail... yes
checking for USB sniffing support... yes
configure: Device for USB sniffing is /dev/usbmon
checking linux/compiler.h usability... no
checking linux/compiler.h presence... no
checking for linux/compiler.h... no
checking linux/usbdevice_fs.h usability... yes
checking linux/usbdevice_fs.h presence... yes
checking for linux/usbdevice_fs.h... yes
checking if usbdevfs_ctrltransfer struct has bRequestType member... yes
checking whether the platform could support netfilter sniffing... yes
checking whether we can compile the netfilter support... yes
checking bluetooth/bluetooth.h usability... no
checking bluetooth/bluetooth.h presence... no
checking for bluetooth/bluetooth.h... no
configure: Bluetooth sniffing is not supported; install bluez-lib devel to enabl                                   e it
checking libusb-1.0/libusb.h usability... yes
checking libusb-1.0/libusb.h presence... yes
checking for libusb-1.0/libusb.h... yes
configure: canusb sniffing is supported
checking for linux/can.h... yes
configure: CAN sniffing is supported
checking linux/net_tstamp.h usability... yes
checking linux/net_tstamp.h presence... yes
checking for linux/net_tstamp.h... yes
checking for a BSD-compatible install... /usr/bin/install -c
configure: creating ./config.status
config.status: creating Makefile
config.status: creating pcap-filter.manmisc
config.status: creating pcap-linktype.manmisc
config.status: creating pcap-tstamp.manmisc
config.status: creating pcap-savefile.manfile
config.status: creating pcap.3pcap
config.status: creating pcap_compile.3pcap
config.status: creating pcap_datalink.3pcap
config.status: creating pcap_dump_open.3pcap
config.status: creating pcap_list_datalinks.3pcap
config.status: creating pcap_list_tstamp_types.3pcap
config.status: creating pcap_open_dead.3pcap
config.status: creating pcap_open_offline.3pcap
config.status: creating pcap_set_tstamp_type.3pcap
config.status: creating config.h
config.status: config.h is unchanged

make

[root@alarmpi libpcap-1.3.0]# make
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./                                   pcap-linux.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./                                   pcap-usb-linux.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-can-linux.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-netfilter-linux.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-canusb-linux.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./fad-getad.c
if grep GIT ./VERSION >/dev/null; then \
        read ver <./VERSION; \
        echo $ver | tr -d '\012'; \
        date +_%Y_%m_%d; \
else \
        cat ./VERSION; \
fi | sed -e 's/.*/static const char pcap_version_string[] = "libpcap version &";/' > version.h
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./inet.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./gencode.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./optimize.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./nametoaddr.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./etherent.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./savefile.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./sf-pcap.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./sf-pcap-ng.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-common.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./bpf_image.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c ./bpf_dump.c
./runlex.sh flex -Ppcap_ -oscanner.c scanner.l
bison -y -p pcap_ -d grammar.y
mv y.tab.c grammar.c
mv y.tab.h tokdefs.h
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c scanner.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -Dyylval=pcap_lval -c grammar.c
rm -f bpf_filter.c
ln -s ./bpf/net/bpf_filter.c bpf_filter.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c bpf_filter.c
if grep GIT ./VERSION >/dev/null; then \
        read ver <./VERSION; \
        echo $ver | tr -d '\012'; \
        date +_%Y_%m_%d; \
else \
        cat ./VERSION; \
fi | sed -e 's/.*/char pcap_version[] = "&";/' > version.c
gcc -O2 -fpic -I.  -DHAVE_CONFIG_H  -D_U_="__attribute__((unused))" -g -O2 -c version.c
ar rc libpcap.a pcap-linux.o pcap-usb-linux.o pcap-can-linux.o pcap-netfilter-linux.o pcap-canusb-linux.o fad-getad.o pcap.o inet.o gencode.o optimize.o nametoaddr.o etherent.o savefile.o sf-pcap.o sf-pcap-ng.o pcap-common.o bpf_image.o bpf_dump.o  scanner.o grammar.o bpf_filter.o version.o
ranlib libpcap.a
VER=`cat ./VERSION`; \
MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' ./VERSION`; \
gcc -shared -Wl,-soname,libpcap.so.$MAJOR_VER  \
    -o libpcap.so.$VER pcap-linux.o pcap-usb-linux.o pcap-can-linux.o pcap-netfilter-linux.o pcap-canusb-linux.o fad-getad.o pcap.o inet.o gencode.o optimize.o nametoaddr.o etherent.o savefile.o sf-pcap.o sf-pcap-ng.o pcap-common.o bpf_image.o bpf_dump.o  scanner.o grammar.o bpf_filter.o version.o   -lusb-1.0
./config.status --file=pcap-config.tmp:./pcap-config.in
config.status: creating pcap-config.tmp
mv pcap-config.tmp pcap-config
chmod a+x pcap-config

make install

[root@alarmpi libpcap-1.3.0]# make install
VER=`cat ./VERSION`; \
MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' ./VERSION`; \
gcc -shared -Wl,-soname,libpcap.so.$MAJOR_VER  \
    -o libpcap.so.$VER pcap-linux.o pcap-usb-linux.o pcap-can-linux.o pcap-netfilter-linux.o pcap-canusb-linux.o fad-getad.o pcap.o inet.o gencode.o optimize.o nametoaddr.o etherent.o savefile.o sf-pcap.o sf-pcap-ng.o pcap-common.o bpf_image.o bpf_dump.o  scanner.o grammar.o bpf_filter.o version.o   -lusb-1.0
[ -d /usr/lib ] || \
    (mkdir -p /usr/lib; chmod 755 /usr/lib)
VER=`cat ./VERSION`; \
MAJOR_VER=`sed 's/\([0-9][0-9]*\)\..*/\1/' ./VERSION`; \
/usr/bin/install -c libpcap.so.$VER /usr/lib/libpcap.so.$VER; \
ln -sf libpcap.so.$VER /usr/lib/libpcap.so.$MAJOR_VER; \
ln -sf libpcap.so.$MAJOR_VER /usr/lib/libpcap.so
#
# Most platforms have separate suffixes for shared and
# archive libraries, so we install both.
#
[ -d /usr/lib ] || \
    (mkdir -p /usr/lib; chmod 755 /usr/lib)
/usr/bin/install -c -m 644 libpcap.a /usr/lib/libpcap.a
ranlib /usr/lib/libpcap.a
[ -d /usr/lib ] || \
    (mkdir -p /usr/lib; chmod 755 /usr/lib)
[ -d /usr/include ] || \
    (mkdir -p /usr/include; chmod 755 /usr/include)
[ -d /usr/include/pcap ] || \
    (mkdir -p /usr/include/pcap; chmod 755 /usr/include/pcap)
[ -d /usr/share/man/man1 ] || \
    (mkdir -p /usr/share/man/man1; chmod 755 /usr/share/man/man1)
[ -d /usr/share/man/man3 ] || \
    (mkdir -p /usr/share/man/man3; chmod 755 /usr/share/man/man3)
[ -d /usr/share/man/man5 ] || \
    (mkdir -p /usr/share/man/man5; chmod 755 /usr/share/man/man5)
[ -d /usr/share/man/man7 ] || \
    (mkdir -p /usr/share/man/man7; chmod 755 /usr/share/man/man7)
for i in pcap.h pcap-bpf.h pcap-namedb.h pcap/bpf.h pcap/bluetooth.h pcap/ipnet.h pcap/namedb.h pcap/pcap.h pcap/sll.h pcap/vlan.h pcap/usb.h; do \
        /usr/bin/install -c -m 644 ./$i \
            /usr/include/$i; done
[ -d /usr/bin ] || \
    (mkdir -p /usr/bin; chmod 755 /usr/bin)
/usr/bin/install -c pcap-config /usr/bin/pcap-config
for i in pcap-config.1; do \
        /usr/bin/install -c -m 644 ./$i \
            /usr/share/man/man1/$i; done
for i in pcap_activate.3pcap pcap_breakloop.3pcap pcap_can_set_rfmon.3pcap pcap_close.3pcap pcap_create.3pcap pcap_datalink_name_to_val.3pcap pcap_datalink_val_to_name.3pcap pcap_dump.3pcap pcap_dump_close.3pcap pcap_dump_file.3pcap pcap_dump_flush.3pcap pcap_dump_ftell.3pcap pcap_file.3pcap pcap_fileno.3pcap pcap_findalldevs.3pcap pcap_freecode.3pcap pcap_get_selectable_fd.3pcap pcap_geterr.3pcap pcap_inject.3pcap pcap_is_swapped.3pcap pcap_lib_version.3pcap pcap_lookupdev.3pcap pcap_lookupnet.3pcap pcap_loop.3pcap pcap_major_version.3pcap pcap_next_ex.3pcap pcap_offline_filter.3pcap pcap_open_live.3pcap pcap_set_buffer_size.3pcap pcap_set_datalink.3pcap pcap_set_promisc.3pcap pcap_set_rfmon.3pcap pcap_set_snaplen.3pcap pcap_set_timeout.3pcap pcap_setdirection.3pcap pcap_setfilter.3pcap pcap_setnonblock.3pcap pcap_snapshot.3pcap pcap_stats.3pcap pcap_statustostr.3pcap pcap_strerror.3pcap pcap_tstamp_type_name_to_val.3pcap pcap_tstamp_type_val_to_name.3pcap; do \
        /usr/bin/install -c -m 644 ./$i \
            /usr/share/man/man3/$i; done
for i in pcap.3pcap pcap_compile.3pcap pcap_datalink.3pcap pcap_dump_open.3pcap pcap_list_datalinks.3pcap pcap_list_tstamp_types.3pcap pcap_open_dead.3pcap pcap_open_offline.3pcap pcap_set_tstamp_type.3pcap; do \
        /usr/bin/install -c -m 644 $i \
            /usr/share/man/man3/$i; done
rm -f /usr/share/man/man3/pcap_datalink_val_to_description.3pcap
ln /usr/share/man/man3/pcap_datalink_val_to_name.3pcap \
         /usr/share/man/man3/pcap_datalink_val_to_description.3pcap
rm -f /usr/share/man/man3/pcap_dump_fopen.3pcap
ln /usr/share/man/man3/pcap_dump_open.3pcap \
         /usr/share/man/man3/pcap_dump_fopen.3pcap
rm -f /usr/share/man/man3/pcap_freealldevs.3pcap
ln /usr/share/man/man3/pcap_findalldevs.3pcap \
         /usr/share/man/man3/pcap_freealldevs.3pcap
rm -f /usr/share/man/man3/pcap_perror.3pcap
ln /usr/share/man/man3/pcap_geterr.3pcap \
         /usr/share/man/man3/pcap_perror.3pcap
rm -f /usr/share/man/man3/pcap_sendpacket.3pcap
ln /usr/share/man/man3/pcap_inject.3pcap \
         /usr/share/man/man3/pcap_sendpacket.3pcap
rm -f /usr/share/man/man3/pcap_free_datalinks.3pcap
ln /usr/share/man/man3/pcap_list_datalinks.3pcap \
         /usr/share/man/man3/pcap_free_datalinks.3pcap
rm -f /usr/share/man/man3/pcap_free_tstamp_types.3pcap
ln /usr/share/man/man3/pcap_list_tstamp_types.3pcap \
         /usr/share/man/man3/pcap_free_tstamp_types.3pcap
rm -f /usr/share/man/man3/pcap_dispatch.3pcap
ln /usr/share/man/man3/pcap_loop.3pcap \
         /usr/share/man/man3/pcap_dispatch.3pcap
rm -f /usr/share/man/man3/pcap_minor_version.3pcap
ln /usr/share/man/man3/pcap_major_version.3pcap \
         /usr/share/man/man3/pcap_minor_version.3pcap
rm -f /usr/share/man/man3/pcap_next.3pcap
ln /usr/share/man/man3/pcap_next_ex.3pcap \
         /usr/share/man/man3/pcap_next.3pcap
rm -f /usr/share/man/man3/pcap_fopen_offline.3pcap
ln /usr/share/man/man3/pcap_open_offline.3pcap \
         /usr/share/man/man3/pcap_fopen_offline.3pcap
rm -f /usr/share/man/man3/pcap_getnonblock.3pcap
ln /usr/share/man/man3/pcap_setnonblock.3pcap \
         /usr/share/man/man3/pcap_getnonblock.3pcap
for i in pcap-savefile.manfile.in; do \
        /usr/bin/install -c -m 644 `echo $i | sed 's/.manfile.in/.manfile/'` \
            /usr/share/man/man5/`echo $i | sed 's/.manfile.in/.5/'`; done
for i in pcap-filter.manmisc.in pcap-linktype.manmisc.in pcap-tstamp.manmisc.in; do \
        /usr/bin/install -c -m 644 `echo $i | sed 's/.manmisc.in/.manmisc/'` \
            /usr/share/man/man7/`echo $i | sed 's/.manmisc.in/.7/'`; done

В итоге

[root@alarmpi ~]# pacman -Qi libpcap
error: package 'libpcap' was not found

Что делать???

PKGBUILD напиши, а не вручную собирай...

cetjs2 ★★★★★ ()

/usr/bin/install -c libpcap.so.$VER /usr/lib/libpcap.so.$VER; \
ln -sf libpcap.so.$VER /usr/lib/libpcap.so.$MAJOR_VER; \
ln -sf libpcap.so.$MAJOR_VER /usr/lib/libpcap.so

Ты всё уже установил. Почитай про «пакетные менеджеры против установки софта из исходников».

anonymous ()
Ответ на: комментарий от anonymous

Если я всё установил тогда почему pacman этого не видит? Я понимаю что ПМ лучше, но в репозиториях нету нужной мне версии.

incognito_z54 ()
Ответ на: комментарий от incognito_z54

Если я всё установил тогда почему pacman этого не видит?

Потому что ты не поставил пакет?

Я понимаю что ПМ лучше, но в репозиториях нету нужной мне версии.

Скачай PKGBUILD, поправь версию, собери и поставь пакет. Но лучше сразу на убунтофорумы.

JohnnyBGoode ()
Ответ на: комментарий от JohnnyBGoode

Потому что ты не поставил пакет?

Я правильно понял, pacman не видит скомпилированные программы?

Скачай PKGBUILD, поправь версию, собери и поставь пакет. Но лучше сразу на убунтофорумы.

Можно ссылку на мануал, или тему на форуме, для быстроты дела.

incognito_z54 ()
Ответ на: комментарий от incognito_z54

Я правильно понял, pacman не видит скомпилированные программы?

Да. Не забудь сделать ldconfig.

Можно ссылку на мануал, или тему на форуме, для быстроты дела.

Быстро не получится. Читай официальную документацию на твой любимый пакетный менеджер.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.