`
aswang
  • 浏览: 848150 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

在android平台上编译libpcap-0.9.8 和 jnetpcap-1.3.0-1

 
阅读更多

昨天尝试编译libpcap0.9.8和jnetpcap1.2成功了,今天想着能不能编译libpcap0.9.8和jnetpcap-1.3.0-1。

因为jnetpcap-1.3.0-1也支持libpcap的0.9.8版本。

 

libpcap0.9.8的源码下载参见前一篇文章:

http://aswang.iteye.com/blog/1036305

 

jnetpcap-1.3.0-1的下载地址:

http://jnetpcap.com/download

 

源码下载完毕之后,还是新建一个目录,把libpcap0.9.8 和jnetpcap-1.3.0-1的c源码放在一起,然后在该目录中新建Android.mk文件,内容如下:(当然javah命令还是需要执行,以便生成对应的头文件)

 

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

 

LOCAL_SRC_FILES:=\

bpf_dump.c\

bpf/net/bpf_filter.c\

bpf_image.c\

etherent.c\

fad-gifc.c\

gencode.c\

grammar.c\

inet.c\

nametoaddr.c\

optimize.c\

pcap.c\

pcap-linux.c\

savefile.c\

scanner.c\

version.c

 

LOCAL_CFLAGS:=-O2 -g

LOCAL_CFLAGS+=-DHAVE_CONFIG_H -D_U_="__attribute__((unused))" -Dlinux -D__GLIBC__ -D_GNU_SOURCE

 

LOCAL_MODULE:= libpcap

include $(BUILD_STATIC_LIBRARY)

 

#LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

 

LOCAL_SRC_FILES:=\

jnetpcap.cpp\

jnetpcap_beta.cpp\

jnetpcap_bpf.cpp\

jnetpcap_dumper.cpp\

jnetpcap_ids.cpp\

jnetpcap_pcap_header.cpp\

jnetpcap_utils.cpp\

nio_jbuffer.cpp\

nio_jmemory.cpp\

nio_jnumber.cpp\

packet_flow.cpp\

packet_jheader.cpp\

packet_jheader_scanner.cpp\

packet_jpacket.cpp\

packet_jscan.cpp\

packet_jsmall_scanner.cpp\

packet_protocol.cpp\

util_checksum.cpp\

util_debug.cpp\

util_in_cksum.cpp\

winpcap_ext.cpp\

winpcap_ids.cpp\

winpcap_send_queue.cpp\

winpcap_stat_ex.cpp

 

LOCAL_MODULE:= libjnetpcap

LOCAL_STATIC_LIBRARIES := libpcap

include $(BUILD_SHARED_LIBRARY)

 

然后进行ndk-build编译,编译报错:

说未定义的引用:crc16_ccitt_seed 等

 

结果找到对应的头文件了:

util_crc16.h 、util_crc32.h

但是没有发现对应的.c文件,于是上网搜索,看看这两个头文件是不是已经在某个库里面实现了,结果没发现有哪个c函数库包含这两个文件,为这个问题纠结了很长时间,最后想是不是下载的包里面没有包含这两个头文件的c源文件,于是想着从svn库里面checkout出来看看,于是到jnetpcap官网上去看文档了,结果还让我找到了svn的地址:

svn co https://jnetpcap.svn.sourceforge.net/svnroot/jnetpcap/jnetpcap/trunk jnetpcap

(网址:http://jnetpcap.com/node/329),索性就把源码全部下载了,结果还真找到了util_crc32.c和util_crc16.c文件。

 

文件找到了,问题怎么解决?直接修改Android.mk文件,在jnetpcap模块的LOCAL_SRC_FILES:=\下面加上这两个c文件:

 

LOCAL_SRC_FILES:=\

util_crc16.c\

util_crc32.c\

jnetpcap.cpp\

......

 

然后,继续编译,成功!

 

虽然成功了,但是后来在android上测试的时候,发现没法使用,因为jnetpcap里面使用了在android里面不支持的java.awt.Image类,虽然找到一些解决办法(例如使用兼容性的java.awt.Image库),但是想想也没必要使用最新版本的,之前的jnetpcap1.2工作的蛮好的,那就继续使用吧。这从编译权当做练习了!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2
1
分享到:
评论
1 楼 gezexu 2011-08-29  
楼主你好,我也成功编译了libpcap0.9.8和jnetpcap1.2,当时当我当我在模拟器中调用的时候总是找不到网卡列表,Pcap.findAllDevs(alldevs, errbuf);执行这个方法,可以成功,但是集合alldevs为空,怀疑是模拟器的原因,后来把程序部署到真机上跑.问题依旧,请问你编译的so能够正确获取网卡列表吗?如果可以的话,麻烦给我发一份(304075296@qq.com),谢谢了,我的qq:304075296加我交流一下

相关推荐

    libpcap-0.9.8.tar.gz

    在libpcap-0.9.8版本中,包含了丰富的函数和结构体,如`pcap_open_live()`用于打开一个网络接口进行实时捕获,`pcap_compile()`用于编译过滤表达式,以及`pcap_loop()`和`pcap_next()`用于循环处理捕获到的数据包。...

    ubuntu20.04无网安装libpcap-dev.zip

    在Ubuntu 20.04系统中,libpcap-dev是一个重要的软件开发包,它提供了对数据包捕获和分析的库支持。libpcap是一个跨平台的库,被广泛用于网络安全、网络监控以及数据分析等领域。如果你正在无网络环境下工作,并且...

    libpcap+libpcap-devel

    libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm

    libpcap-1.9.1.tar.gz

    本文将详述libpcap-1.9.1版本在Linux环境下的应用和编译过程,旨在帮助读者深入理解其核心功能和使用技巧。 libpcap的核心功能主要体现在以下几个方面: 1. **数据包捕获**:libpcap能够实时捕获网络接口上的...

    libpcap-devel-1.5.3-11.el7.x86_64.rpm

    libpcap-devel-1.5.3-11.el7.x86_64.rpm 下载不到正确包的同志自取,不能零积分下载最少只能1积分请见谅

    libpcap-1.5.3-12.el7.x86_64.rpm

    Centos 7.x tcpdump 离线安装所需的软件(libpcap-1.5.3-12.el7.x86_64.rpm).

    libpcap-devel-1.3.0-2.4.1.x86_64.rpm

    libpcap-devel-1.3.0-2.4.1.x86_64.rpm

    libpcap-1.10.1.tar.gz

    libpcap-1.10.1是libpcap的一个稳定版本,包含了多项改进和修复。这些更新可能包括增强的性能、新的API功能、错误修复以及对新硬件或协议的支持。 **三、源码安装步骤** 1. **环境准备**:确保系统已经安装了必要...

    libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm

    libpcap-devel-1.4.0-4.20130826git2dbcaa1.el6.x86_64.rpm

    libpcap-devel-1.0.0-6.20091201git117cb5.el6.x86_64.rpm

    在linux下使用的libpcap-devel-1.0.0-6.20091201git117cb5.el6.x86_64.rpm

    libpcap-devel-0.9.4-14.el5.x86_64

    libpcap-devel-0.9.4-14.el5.x86_64.rpm,安装iftop64位系统时所需的依赖包

    libpcap-devel-1.5.3-12.el7.i686.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    libpcap-1.5.3-11.el7.x86_64.rpm

    离线安装包,亲测可用

    libpcap交叉编译

    * 交叉编译:是一种编译技术,允许在一个平台上编译的代码在另一个平台上运行。 * libpcap:是一个流行的网络嗅探器库,提供了一个跨平台的接口来捕获和分析网络流量。 * Makefile:是一个编译控制文件,用于指定...

    libpcap-0.9.4-15.el5.x86_64.rpm

    64位RM包 libpcap-0.9.4-15.el5.x86_64

    libpcap-1.4.0.tar.gz

    libpcap-1.4.0.tar.gz是一个压缩包文件,包含了libpcap的1.4.0版本源代码,供用户编译和安装到他们的系统中。 libpcap的核心功能主要体现在以下几个方面: 1. **数据包捕获**:libpcap库提供了一套API(应用程序...

    libpcap-1.1.1.tar

    在这个场景中,`libpcap-1.1.1.tar`是一个未压缩的tar文件,它包含了源代码、头文件、文档和其他构建libpcap所需的资源。使用`tar -xvf`命令可以将其解压到当前目录,方便后续的编译和安装。 总的来说,libpcap是一...

    libpcap-devel-1.5.3-12.el7.x86_64.rpm

    jpm

    适用Centos7/8/9的libpcap、libpcap-devel离线安装包rpm

    适用Centos7/89的libpcap、libpcap-devel离线安装包rpm,适用于Linux (Fedora/RHEL/CentOS)对应版本的系统

Global site tag (gtag.js) - Google Analytics