(如果有人帮助我,可以在我之前的问题中找到一些背景知识:JamVm not running an application (that uses jpcap) on Gumstix)。
我正在尝试在Gumstix overo board上运行数据包嗅探java应用程序。该应用程序是在Windows 7上使用Netbeans开发的。当我尝试在Gumstix上运行它(使用JamVm)时,我收到一条错误消息,说文件libjpcap.so丢失了。然后我搜索了jpcap包(或libjpcap.so)以进行angstrom分发,还搜索arm架构(不管发行版)但找不到任何东西。
因此,正如jpcap网站(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/install.html)所建议的那样,我现在正试图在我的Gumstix板上编译jpcap源代码。在makefile(/ src / c / Makefile)中,我将JAVA_HOME设置为/ usr / java / latest。当我执行'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.这个丢失的文件是导致错误的原因吗?我忘了在某个地方添加一些路径吗?
任何帮助都将受到高度赞赏。提前谢谢。
答案 0 :(得分:1)
(回答我自己的问题,希望它可以帮助其他人)
为了在Gumstix上编译jpcap,我首先必须提供以下文件和文件夹: 1)jni.h(我从jamvm源代码中得到它) 2)libpcap-1.1.1源代码(从tcpdump下载)
现在,在jpcap make文件(位于/jpcap-0.7/src/c/中)中,我修改了JAVA_DIR和PCAP_INCLUDE以指向我刚刚下载了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 /
数据包嗅探应用程序在此之后开始工作。 (我希望我没有错过/忘记任何一步。)
答案 1 :(得分:0)
对于此错误:
JpcapCaptor.c:6:16: error: jni.h: No such file or directory
和另一个-I并指向jdkInstallRoot \ include目录。