![Как скомпилировать и запустить «protoident»](https://rvso.com/image/885969/%D0%9A%D0%B0%D0%BA%20%D1%81%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%B8%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%C2%ABprotoident%C2%BB.png)
Я пытаюсь скомпилировать и запустить инструмент DPI с открытым исходным кодом под названиемПротоидент. Поэтому я скачалего исходный код из Githubи поискал внутри каталогов руководства по компиляции/сборке, но ничего не нашел. Наконец, я начал с запуска make
команды и Makefile
команды внутри ее каталога, но столкнулся со следующими ошибками:
me@me-MS-7693:~/Desktop/protoident-master/src$ ./Makefile
./Makefile: line 9: TARGET: command not found
./Makefile: line 10: PROTOCOLS: command not found
./Makefile: line 11: PROTOCOLS: command not found
./Makefile: line 11: SOURCES: command not found
./Makefile: line 12: SOURCES:.c=.h: command not found
./Makefile: line 12: HEADERS: command not found
./Makefile: line 13: SOURCES:.c=.o: command not found
./Makefile: line 13: OBJECTS: command not found
./Makefile: line 14: OTHER_FILES: command not found
./Makefile: line 18: CC: command not found
./Makefile: line 19: CFLAGS: command not found
./Makefile: line 21: OFLAG: command not found
./Makefile: line 22: CFLAG: command not found
./Makefile: line 24: CC: command not found
./Makefile: line 24: LINK: command not found
./Makefile: line 25: LINKFLAGS: command not found
./Makefile: line 26: LIBS: command not found
./Makefile: line 31: .SUFFIXES:: command not found
./Makefile: line 32: .c.o:: command not found
./Makefile: line 33: CC: command not found
./Makefile: line 33: CFLAGS: command not found
./Makefile: line 33: CFLAG: command not found
./Makefile: line 33: OFLAG: command not found
./Makefile: line 33: $<: command not found
./Makefile: line 38: SOURCES: command not found
./Makefile: line 38: TARGET: command not found
./Makefile: line 38: all:: command not found
./Makefile: line 40: profile:: command not found
./Makefile: line 41: profile_compile:: command not found
./Makefile: line 42: profile_compile:: command not found
./Makefile: line 43: profile_compile:: command not found
./Makefile: line 46: TARGET: command not found
./Makefile: line 46: OBJECTS: command not found
./Makefile: line 47: LINK: command not found
./Makefile: line 47: LINKFLAGS: command not found
./Makefile: line 47: LIBS: command not found
./Makefile: line 47: OFLAG: command not found
./Makefile: line 47: TARGET: command not found
./Makefile: line 47: OBJECTS: command not found
./Makefile: line 52: archive:: command not found
./Makefile: line 53: TARGET: command not found
./Makefile: line 53: SOURCES: command not found
./Makefile: line 53: HEADERS: command not found
./Makefile: line 53: OTHER_FILES: command not found
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
./Makefile: line 55: clean:: command not found
./Makefile: line 56: OBJECTS: command not found
./Makefile: line 58: distclean:: command not found
./Makefile: line 59: TARGET: command not found
me@me-MS-7693:~/Desktop/protoident-master/src$ make
gcc -lpcap -o protoident main.o hashtable.o ip_reassembling.o flow.o global_func.o dns.o http.o sip.o smtp.o
main.o: In function `main':
/home/ghasemi/Desktop/protoident-master/src/main.c:85: undefined reference to `pcap_open_offline'
/home/ghasemi/Desktop/protoident-master/src/main.c:97: undefined reference to `pcap_compile'
/home/ghasemi/Desktop/protoident-master/src/main.c:100: undefined reference to `pcap_geterr'
/home/ghasemi/Desktop/protoident-master/src/main.c:103: undefined reference to `pcap_setfilter'
/home/ghasemi/Desktop/protoident-master/src/main.c:105: undefined reference to `pcap_geterr'
/home/ghasemi/Desktop/protoident-master/src/main.c:118: undefined reference to `pcap_datalink'
/home/ghasemi/Desktop/protoident-master/src/main.c:125: undefined reference to `pcap_loop'
/home/ghasemi/Desktop/protoident-master/src/main.c:134: undefined reference to `pcap_freecode'
/home/ghasemi/Desktop/protoident-master/src/main.c:136: undefined reference to `pcap_close'
collect2: error: ld returned 1 exit status
Makefile:47: recipe for target 'protoident' failed
make: *** [protoident] Error 1
Почему у меня возникли эти ошибки и как мне скомпилировать и использовать этот инструмент?
решение1
Makefile
это файл конфигурации для make
, а не отдельная команда. Каноническийпроцедура сборки и установкиявляется:
./configure
make
make install # usually: sudo make install
Большинство проектов подробно описывают процесс установки в текстовых файлах README
или INSTALL
в аналогичных файлах.
Однако этот не имеет никакого configure
скрипта, а вместо него есть готовый Makefile
. Он не содержит INSTALL
раздела, поэтому третья команда также неприменима.
Итак, вам нужно всего лишь выполнить:
make
Это задокументировано в README
файле в src
каталоге. Забавно, что написано на чешском языке (который, кстати, мой родной язык).
Исправление undefined reference
ошибок
В предоставленном Makefile есть проблема, которую можно исправить с помощью следующего патча (на основеКомментарий Stack Overflow):
diff --git a/src/Makefile b/src/Makefile
index 367dcc4..dda5fb3 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -44,7 +44,7 @@ profile_compile: all
$(TARGET): $(OBJECTS)
- $(LINK) $(LINKFLAGS) $(LIBS) $(OFLAG) $(TARGET) $(OBJECTS)
+ $(LINK) $(LINKFLAGS) $(OFLAG) $(TARGET) $(OBJECTS) $(LIBS)
#####################################
#other rules
решение2
Я посмотрел вашу ссылку на инструкции. Их можно найти, но они написаны на чешском языке. Например:
Zdrojová a cílová síťová adresa, zdrojový a cílový port není třeba dále
vysvětlovat.
Переводится на английский как:
Source and destination network address, source and destination port does not need to be further explain.
Просматривая различные исходные файлы, вы увидите в описании пометку «Не тестировалось».
Автор называет проект экспериментом, и он не обновлялся в течение 2 лет.
Я предполагаю, что проект сломан, и, возможно, с вашим компилятором и функциями make все в порядке. Чтобы убедиться, что ваша система работает, загрузите простой калькулятор с github для рабочего стола gnome, у которого 200 участников и 243 релиза:гном-калькулятор. Составьте это вместо вашего текущего выбора, который не проявлял активности в течение двух лет и который автор называет экспериментом.