手动编译安装libpcap(实战记录)

我们通常在Ubuntu或centos上执行安装命令:sudo apt-get install libpcap-dev  或 yum -y  install libpcap-dev 

但是有些时候因各种原因造成上述命令无法使用,所以就需要手动下载源码编译安装了,下面总结了操作步骤,逐步执行即可:

(官方的下载地址:http://www.tcpdump.org/)可自选需要的版本安装,我选的是1.7.4

wget -c http://www.tcpdump.org/release/libpcap-1.7.4.tar.gz
tar -zxvf libpcap-1.7.4.tar.gz
cd libpcap-1.7.4

此时先不要急着去编译,先安装三个库再去编译吧:

yum install -y gcc
yum install -y flex
yum install -y byacc

安装好这三个库后再执行:

./configure
make
make install

有时候你运行程序时发现程序仍提示找不到libpcap库,此时执行一下命令:

find / -name libpacp.so  
find / -name libpacp.so.1

我的libpacp.so.1库在目录: /usr/local/lib/ 所以将其拷贝到/usr/lib下一份

cp /usr/local/lib/libpcap.so /usr/lib/
cp /usr/local/lib/libpcap.so.1 /usr/lib/

 

下面介绍一下为什么要安装库或工具:gcc ,flex、byacc

1、不安装 gcc 库,在进行./config时会提示你没有gcc工具等错误

2、不安装 flex 会在执行make时提示以下错误:

configure: error: Your operating system's lex is insufficient to compile
libpcap. flex is a lex replacement that has many advantages, including
being able to compile libpcap. For more information, see
http://www.gnu.org/software/flex/flex.html .
[root@localhost libpcap-1.7.4]# make
make: *** No targets specified and no makefile found. Stop.

3、不安装 byacc 会在执行make时提示以下错误:

[root@localhost libpcap-1.7.4]# make
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-linux.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-usb-linux.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-can-linux.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-netfilter-linux.c
gcc -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 -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./inet.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./gencode.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./optimize.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./nametoaddr.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./etherent.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./savefile.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./sf-pcap.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./sf-pcap-ng.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./pcap-common.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./bpf_image.c
gcc -fpic -I. -DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -g -O2 -c ./bpf_dump.c
./runlex.sh lex -oscanner.c scanner.l
mv scanner.c scanner.c.bottom
cat ./scanner.c.top scanner.c.bottom > scanner.c
yacc -d grammar.y
make: yacc: Command not found
make: *** [grammar.c] Error 127
[root@localhost libpcap-1.7.4]#

 

posted @ 2020-08-14 15:18  天地一体  阅读(6641)  评论(0编辑  收藏  举报