编译 jpcap 运行在 aarch64平台生成 libjpcap.so 文件

10 篇文章 0 订阅
8 篇文章 0 订阅

使用环境 java 通过 jni 方式调用 jpcap 

因为这玩意10年未更新,编译好的 so 只能在 x86 环境使用,对于arm平台无法直接使用

下载源码 https://github.com/ioleary/jpcap-0.7

编译目录 jpcap-0.7-master/src/c

依赖 libpcap-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel

依赖包直接通过软件源下载 yum install libpcap-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel

debian 或 ubuntu 环境使用 apt-get install libpcap-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel

编译依赖,需要复制的文件 jni.h 等

安装好openjdk之后访问目录 /usr/lib/jvm/java-1.8.0/include/ ,复制 jni.h 到 /usr/include/ 目录下

另外还需要复制 /usr/lib/jvm/java-1.8.0/include/linux/jni_md.h 到 /usr/include/ 目录下,另外一个 jawt_md.h 可以不用复制

然后修改文件 jpcap-0.7-master/src/c/Makefile 增加 -fPIC 参数 

all: libjpcap.so

libjpcap.so: JpcapCaptor.c JpcapSender.c JpcapWriter.c\
             packet_arp.c packet_datalink.c packet_icmp.c packet_ip.c\
             packet_ipv6.c packet_tcp.c packet_udp.c 
                $(CC) $(COMPILE_OPTION) -fPIC -I$(JNI_INCLUDE) -I$(JNI_INCLUDE2)\
                 -I$(PCAP_INCLUDE)\
                JpcapCaptor.c JpcapSender.c JpcapWriter.c\
          packet_arp.c packet_datalink.c packet_icmp.c packet_ip.c\
          packet_ipv6.c packet_tcp.c packet_udp.c\
                -o libjpcap$(SUFFIX) -lpcap
clean:
                -rm libjpcap$(SUFFIX)

这里修改完成后就可以执行命令:make

然后一堆 warning 提示,可以不管,当前目录下就可以看到 libjpcap.so 文件了

验证:readelf -h libjpcap.so (没有这个命令就自己yum安装)

[root@localhost c]# readelf -h libjpcap.so 
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           AArch64
  Version:                           0x1
  Entry point address:               0x3270
  Start of program headers:          64 (bytes into file)
  Start of section headers:          76264 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         7
  Size of section headers:           64 (bytes)
  Number of section headers:         29
  Section header string table index: 28

上面命令执行后就可以看到我们要的 ELF64,机器是 AArch64 (我的设备是 arm cpu)

 

然后就是 运行你的 java 代码测试 jpcap 功能了

 

命令参数 参考文章:https://blog.csdn.net/wsmnbzbraw333/article/details/83972612

 

编译好的aarch64文件:https://download.csdn.net/download/firseve/18141924

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值