手動編譯安裝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]#

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM