一、iftop依赖ncurses,所以先编译ncurses
https://mp.csdn.net/mp_blog/creation/editor/125993627https://mp.csdn.net/mp_blog/creation/editor/125993627这篇文章已经写过如何编译
二、iftop还依赖pcap,所以还要编译pcap
Index of /release
https://www.tcpdump.org/release/
从上方链接中下载源码并进入下载目录,执行提前准备好的build.sh脚本
#!/bin/sh
HOST=arm-linux-gnueabihf
DIR=$PWD/install
CC=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-gcc
AR=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-ar
RANLIB=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-ranlib
STRIP=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-strip
if [ ! -d ${DIR} ]; then
mkdir -p ${DIR}
else
rm -rf install/*
fi
./configure \
--host=${HOST} \
--prefix=${DIR} \
CC=${CC} \
AR=${AR} \
RANLIB=${RANLIB}
if [ $? -eq 0 ]; then
make && make install
fi
在./configure的时候报错了。。。
configure: error: pcap type not determined when cross-compiling; use --with-pcap=...
把configure文件中的下面几行注释掉就行
#if test -z "$with_pcap" && test "$cross_compiling" = yes; then
# as_fn_error $? "pcap type not determined when cross-compiling; use --with-pcap=..." "$LINENO" 5
#fi
再次执行build.sh脚本后,就会在install/lib目录下生成需要的库文件。
三、编译iftop
下载源码并进入下载目录,执行提前准备好的build.sh脚本
#!/bin/sh
HOST=arm-linux-gnueabihf
DIR=$PWD/install
CC=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-gcc
AR=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-ar
RANLIB=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-ranlib
STRIP=/opt/a1000/toolchain/app/ext-toolchain/bin/arm-linux-gnueabihf-strip
if [ ! -d ${DIR} ]; then
mkdir -p ${DIR}
else
rm -rf install/*
fi
./configure \
--host=${HOST} \
--prefix=${DIR} \
CC=${CC} \
AR=${AR} \
RANLIB=${RANLIB} \
--with-libpcap=/home/ylkuai/project/libpcap-1.8.1/install \
LDFLAGS=-L/home/ylkuai/project/ncurses-5.9/install/lib \
CPPFLAGS=-I/home/ylkuai/project/ncurses-5.9/install/include
if [ $? -eq 0 ]; then
make && make install
fi
没编通,报错了
checking for a curses library containing mvchgat... none found
configure: error: Curses! Foiled again!
(Can't find a curses library supporting mvchgat.)
Consider installing ncurses.
把configure文件中的这几行注释了
#if test x$foundcurseslib = x ; then
# { $as_echo "$as_me:${as_lineno-$LINENO}: result: none found" >&5
#$as_echo "none found" >&6; }
# as_fn_error $? "Curses! Foiled again!
# (Can't find a curses library supporting mvchgat.)
# Consider installing ncurses." "$LINENO" 5
#else
# { $as_echo "$as_me:${as_lineno-$LINENO}: result: -l$foundcurseslib" >&5
#$as_echo "-l$foundcurseslib" >&6; }
#fi
make的时候报错了。。找不到头文件
edline.c:10:20: fatal error: curses.h: No such file or directory
compilation terminated.
Makefile:529: recipe for target 'edline.o' failed
make[2]: *** [edline.o] Error 1
make[2]: Leaving directory '/home/ylkuai/tardir/iftop-1.0pre4'
Makefile:592: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/ylkuai/tardir/iftop-1.0pre4'
Makefile:400: recipe for target 'all' failed
make: *** [all] Error 2
改一下makefile
CPPFLAGS = -I/home/ylkuai/project/ncurses-5.9/install/include -I/home/ylkuai/project/libpcap-1.8.1/install/include
改成下面这样
CPPFLAGS = -I/home/ylkuai/project/ncurses-5.9/include -I/home/ylkuai/project/libpcap-1.8.1/install/include
直接make再make install就成功了