Ошибка Snort: plugbase.c: неопределенная ссылка на: & quot; Настройка & quot;

Я в недоумении, что делать, и я надеюсь, что кто-то может решить эту проблему или дать мне полезный совет.

Я пытаюсь добавить препроцессор и соответствующий плагин обнаружения в Snort.
(Включая препроцессор был без ошибок, но бесполезен без соответствующего плагина обнаружения)

Я уже включил необходимые части кода в исходные файлы и скопировал все необходимые файлы в нужное место.

«Настройка» выполняется без ошибок:

./configure --enable-sourcefire --enable-targetbased

Но, когда я делаю make я получаю следующую ошибку:

plugbase.o: In function 'RegisterRuleOptions':
../snort-2.9.3.1/src/plugbase.c:199: undefined reference to 'SetupProfi'
collect2: error: ld returned 1 exit status

Вот важная часть моего plugbase.c:

/* built-in detection plugins */
#include "detection-plugins/sp_profinet_func.h"...
...
...
void RegisterRuleOptions(void)
{
LogMessage("Initializing Plug-ins!\n");

SetupProfi();
}

Файлы sp_profinet_func.c а также sp_profinet_func.h находятся в src/detection-plugins,
Это код sp_profinet_func.h:

#ifndef __SP_PROFINET_H__
#define __SP_PROFINET_H__

void SetupProfi(void);
#ifdef DETECTION_OPTION_TREE
u_int32_t SpProfinetFunctionCodeCheckHash(void *d);
int SpProfinetFunctionCodeCheckCompare(void *l, void *r);
#endif

#endif  /* __SP_PROFINET_H__ */

А вот выдержка из sp_profinet_func.c:

void SetupProfi(void)
{
printf("RULES-SetupProfi");
/* map the keyword to an initialization/processing function */
RegisterRuleOption("Profinet_func", SpProfinetFunctionCodeInit, NULL, OPT_TYPE_DETECTION, NULL);
}

Я относительно новичок в программировании и компиляции C / C ++.
Я уже выяснил, что эта ошибка может означать проблему со связыванием, но я не знаю, как ее исправить.

Кто-нибудь знает, как решить эту проблему и запустить плагин обнаружения?

Операционная система — Debian 7.8, и я использую Snort-Version 2.9.3.1 по рекомендации разработчика плагинов.

Заранее спасибо!

\Крис

2

Решение

Я решил проблему самостоятельно.
Спасибо @ RP и @ Pandrei за подсказку взглянуть на Makefile.

После ./configure я посмотрел на Makefile (src / detection-plugins) и увидел, что не было объявления sp_profinet_func.c sp_profinet_func.h под «am_libspd_a_SOURCES_DIST», а также нет sp_profinet_func.$(OBJEXT) под «am_libspd_a_OBJECTS».

Я просто добавил эти декларации и сделал make а также sudo make install и теперь препроцессор и плагин обнаружения работают.

Спасибо за ваши старания.

\Крис

1

Другие решения


По вопросам рекламы [email protected]