在编译snort并加入另外的预处理器时产生如下的问题:
1.undefined reference to “DebugMessage”
2.undefined reference to “pthread_create"
解决方法:
对于1中错误:开始认为可能是Debug.h文件没有引用而找不到DebugMessage,后来上网找到要在DebugMessage函数外面加DEBUG_WRAP,如spp_telnet_negotiation.c预处理器中的
void SetupTelNeg()
{
/* Telnet negotiation has many names, but we only implement this
* plugin for Bob Graham's benefit...
*/
RegisterPreprocessor("telnet_decode", TelNegInit);
DEBUG_WRAP(DebugMessage(DEBUG_PLUGIN, "Preprocessor: Telnet Decode Decode is setup...\n"););
}
对于错误二:由于此预处理器用到了线程编程要用到linux中没有的函数库pthread,所有在编译时要加-lpthread参数,如gcc -o test test.c -lpthread 但是在snort中编译是用的make所以需要在Makefile中修改LIBS=* * * (后加-lpthread),但是要在src目录下的Makefile中改,一开始我以为在是src/preprocessor预处理器目录中改,这样不行,必须在src中改,具体原因可能得看snort的结构了。
至于一开始./configure就可能出错的找不到libpcap错误很怪异,有如下几种情况:
没装libpcap,只有先装好了;locate libpcap找到了但是./configure时不行,这就很怪异了,可能是编译器的原因吧,网上有人甚至说在REHL5中有这个问题而在REHL3,4中可以,具体原因不知。
阅读(1084) | 评论(0) | 转发(0) |