Компиляция / установка 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. Является ли этот отсутствующий файл причиной ошибок? Я забыл добавить куда-нибудь пути?

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

2 ответа

Решение

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

Для компиляции jpcap на Gumstix мне сначала нужно было предоставить следующие файлы и папки: 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 на эту папку:

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

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

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

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

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

Другие вопросы по тегам