(如果有人帮助我,可以在我之前的问题中找到一些背景信息:JamVm没有在Gumstix上运行应用程序(使用jpcap))。
我正试图在Gumstix overo板上运行一个数据包嗅探java应用程序。该应用程序是在Windows7上使用Netbeans开发的。当我尝试在Gumstix(使用JamVm)上运行它时,我收到一个错误,说缺少一个文件libjpcap.so。然后,我搜索了用于angstrom发行版的jpcap包(或libjpcap.so),以及arm架构(无论发行版如何),但找不到任何东西。
因此,正如jpcap网站上所建议的那样(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/install.html),我现在正试图在我的Gumstix板上编译jpcap源代码。在makefile(/src/c/makefile)中,我将JAVA_HOME设置为/usr/JAVA/relatest。当我执行"make"时,会出现大量错误。其中一些如下所示:
root@overo:/usr/src/jpcapTar/jpcap-0.7/src/c# make
gcc -shared -L. -I/usr/java/latest/include -I/usr/java/latest/include/linux
-I/usr/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.so -lpcap
JpcapCaptor.c:6:16: error: jni.h: No such file or directory
JpcapCaptor.c:7:17: error: pcap.h: No such file or directory
In file included from JpcapCaptor.c:35:
Jpcap_sub.h:53: error: expected '=', ',', ';', 'asm' or '__attribute__' before '
*' token
Jpcap_sub.h:54: error: expected '=', ',', ';', 'asm' or '__attribute__' before '
*' token
Jpcap_sub.h:55: error: 'PCAP_ERRBUF_SIZE' undeclared here (not in a function)
Jpcap_sub.h:57: error: expected '=', ',', ';', 'asm' or '__attribute__' before '
JpcapHandler'
Jpcap_sub.h:59: error: expected '=', ',', ';', 'asm' or '__attribute__' before '
UnknownHostException
看到jni.h导致了第一条错误消息,我搜索了我的linux盒子,但找不到jni.h。这个丢失的文件是错误的原因吗?我忘了在某处添加一些路径了吗?
如有任何帮助,我们将不胜感激。提前谢谢。
(回答我自己的问题,希望它能帮助其他人)
为了在Gumstix上编译jpcap,我首先必须提供以下文件和文件夹:1) jni.h(我从jamvm源代码中得到的)2) libpcap-1.1.1源代码(从tcpdump下载)
现在,在jpcap-make文件(位于/jpcap-0.7/src/c/中)中,我修改了JAVA_DIR和PCAP_ININCLUDE,以指向我刚刚下载libpcap和jni.h的文件夹。
Jpcap仍然无法编译。它查找一个名为"libpcap.so"的文件,而我的gumstix得到了"libpcap.so.1"。因此,我创建了一个指向该文件的符号链接:
ln --symbolic libpcap.so.1 libpcap.so
这次运行"make"导致创建了文件"libjpcap.so"。接下来,我将此文件复制到/usr/lib/,并将LD_LIBRARY_PATH指向以下文件夹:
export LD_LIBRARY_PATH=/usr/lib/
数据包探查应用程序在此之后开始工作。(我希望我没有错过/忘记任何一步。)
对于此错误:
JpcapCaptor.c:6:16: error: jni.h: No such file or directory
和另一个-I,并指向jdkInstallRoot\include目录。