1.
如果需要让pppd支持packet filtering 功能的话就需要编译libpcap.
cross compile libpcap-1.0.0
./configure –host=arm-xscale-linux-gnu –prefix=/usr/arm-xscale-linux-gnu/
直接出错了
configure: error: pcap type not determined when cross-compiling; use –with-pcap=…
比较了非交叉编译的log,发现需要加上–with-pcap=linux
./configure –host=arm-xscale-linux-gnu –prefix=/usr/arm-xscale-linux-gnu/ –with-pcap=linux
checking Linux kernel version… unknownconfigure: error: cannot determine linux version when cross-compiling
查configure文件if test $ac_cv_linux_vers = unknown ; then { { echo “$as_me:$LINENO: error: cannot determine linux version when cross-compiling” >&5echo “$as_me: error: cannot determine linux version when cross-compiling” >&2;} { (exit 1); exit 1; }; }
原来是交叉编译器无法通过uname获得arm linux 的版本.只能通过cache文件设置了.
echo ac_cv_linux_vers=linux-2.6.15.6-xyz4>arm-linux.cache./configure –cache-file=arm-linux.cache –host=arm-xscale-linux-gnu –prefix=/usr/arm-xscale-linux-gnu/ –with-pcap=linuxmake make install
这下过了libpcap-1.0.0被安装到了/usr/arm-xscale-linux-gnu/ 目录下
2.
cross compile ppp-2.4.4./configure –prefix=/usr/arm-xscale-linux-gnu <– ppp-2.4.4 只支持–prefix/–sysconf参数,其他都不支持
make CC=/opt/gcc-4.1.2-glibc-2.4/arm-xscale-linux-gnu/bin/arm-xscale-linux-gnu-gcc
options.c:59:18: error: pcap.h: No such file or directoryoptions.c: In function ‘process_option’:options.c:781: warning: dereferencing type-punned pointer will break strict-aliasing rulesoptions.c: In function ‘setpassfilter’:options.c:1458: error: ‘pcap_t’ undeclared (first use in this function)options.c:1458: error: (Each undeclared identifier is reported only onceoptions.c:1458: error: for each function it appears in.)options.c:1458: error: ‘pc’ undeclared (first use in this function)
个人觉得,ppp的Makefile 有问题,没有在configure的时候把 –prefix 所指向的路径作为默认路径.
我的做法有两种第一种在 pppd/Makefile 文件中
line86 行 CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS) ‘-DDESTDIR=”/usr/arm-xscale-linux-gnu”‘后添加CFLAGS += -I$(DESTDIR)/include
LDFLAGS = -L$(DESTDIR)/lib
或者第二种也是在 pppd/Makefile 文件中
直接disable PPP packet filtering,这样的话libpcap-1.0.0甚至都不用编译
# Uncomment the next line to include support for PPP packet filtering.# This requires that the libpcap library and headers be installed# and that the kernel driver support PPP packet filtering.#FILTER=y
两种任一种改完,再运行make CC=/opt/gcc-4.1.2-glibc-2.4/arm-xscale-linux-gnu/bin/arm-xscale-linux-gnu-gcc make install
ppp的包就被安装在pc的/usr/arm-xscale-linux-gnu/, 把该目录原封不动拷贝到板子的相同路径下,就可以在板子上运行pppd了.
OK.
人之所以有一张嘴,而有两只耳朵,原因是听的要比说的多一倍。