Ошибка компиляции/установки jpcap на Gumstix

(Небольшую информацию можно найти в моем предыдущем вопросе здесь, если это поможет кому-то мне помочь: JamVm не запускает приложение (использующее jpcap) на Gumstix ).

Я пытаюсь запустить java-приложение для обнюхивания пакетов на плате Gumstix overo. Приложение было разработано с использованием Netbeans для Windows 7. Когда я попытался запустить его в Gumstix (используя JamVm), я получил сообщение об ошибке, в котором говорилось, что файл libjpcap.so отсутствует. Затем я искал пакет jpcap (или libjpcap.so) для дистрибутива angstrom, а также для архитектуры arm (независимо от дистрибутива), но ничего не нашел.

Поэтому, как предлагается на веб-сайте jpcap (http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/install.html), сейчас я пытаюсь скомпилировать исходный код jpcap на своей плате Gumstix. В make-файле (/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. Является ли этот отсутствующий файл причиной ошибок? Я где-то забыл добавить несколько путей?

Любая помощь будет высоко ценится. Заранее спасибо.


person user1269789    schedule 20.03.2012    source источник
comment
Мне удалось скомпилировать jpcap на моем Gumstix. Однако я еще не запускал приложение на основе jpcap, поэтому не уверен, правильно ли прошла компиляция. Закрою вопрос, как только убедимся, что все так, как должно быть.   -  person user1269789    schedule 22.03.2012


Ответы (2)


(Отвечая на мой собственный вопрос в надежде, что это может помочь кому-то другому)

Для компиляции jpcap на Gumstix мне сначала пришлось предоставить следующие файлы и папки: 1) jni.h (получил из исходников jamvm) 2) исходник libpcap-1.1.1 (скачал с tcpdump)

Теперь в файле сборки jpcap (расположенном в /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 на эту папку:

экспорт LD_LIBRARY_PATH=/usr/lib/

После этого заработало приложение для перехвата пакетов. (Надеюсь, я не пропустил/забыл ни одного шага.)

person user1269789    schedule 11.04.2012

Для этой ошибки:

JpcapCaptor.c:6:16: error: jni.h: No such file or directory 

и еще один -I и указывает на каталог jdkInstallRoot\include.

person Java42    schedule 20.03.2012
comment
спасибо, но как это поможет, если у меня вообще нет jni.h на моем Gumstix? То же самое касается pcap.h (следующая ошибка). - person user1269789; 21.03.2012