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.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。
提前致谢!
\克里斯
我自己解决了这个问题。
感谢@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".
下
我只是添加了这些声明并做了 make
和 sudo make install
现在预处理器和检测插件是 运行.
感谢您的努力。
\克里斯
我不知道该怎么办,我希望有人能解决这个问题或给我一个有用的提示。
我正在尝试将预处理器和相应的检测插件添加到 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.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。
提前致谢!
\克里斯
我自己解决了这个问题。 感谢@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".
我只是添加了这些声明并做了 make
和 sudo make install
现在预处理器和检测插件是 运行.
感谢您的努力。
\克里斯