我們通常在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]#