Snort Error: plugbase.c: Undefined reference to: "Setup"

Snort Error: plugbase.c: Undefined reference to: "Setup"

我不知道该怎么办,我希望有人能解决这个问题或给我一个有用的提示。

我正在尝试将预处理器和相应的检测插件添加到 Snort 中。 (包括预处理器没有任何错误,但没有相应的检测插件是没有用的)

我已经将必要的代码部分包含到源文件中,并将所有必要的文件复制到正确的位置。

"Configure" 是 运行,没有任何错误:

./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.csp_profinet_func.hsrc/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。

提前致谢!

\克里斯

我自己解决了这个问题。 感谢@RP 和@Pandrei 提供查看 Makefile 的提示。

./configure 之后,我查看了 Makefile (src/detection-plugins),发现 "am_libspd_a_SOURCES_DIST" 下没有 sp_profinet_func.c sp_profinet_func.h 的声明,也没有 sp_profinet_func.$(OBJEXT) 在 "am_libspd_a_OBJECTS".

我只是添加了这些声明并做了 makesudo make install 现在预处理器和检测插件是 运行.

感谢您的努力。

\克里斯