使用libnids编译

时间:2012-09-13 04:00:04

标签: gcc libpcap

我一直在尝试安装 libnids (Ubuntu LTS和Mac OS X),现在我知道如何使用它编译程序。

我在这里写这个是因为没有太多文档,但是libnids下载文件夹中有一些带有makefile的示例。这个makefile的重要内容是:

CC = gcc    
PCAPLIB     = -lpcap    
LNETLIB     = -lnet    
LIBS        = -L../src -lnids $(PCAPLIB) $(LNETLIB) -lgthread-2.0 -lnsl

example:
    $(CC) example.c -o example $(LIBS)

如果您在Mac OS X中编译它,请忽略:-lgthread-2.0 -lnsl -L ../src 但我不知道是否因为这些遗漏的东西而停止运作。

2 个答案:

答案 0 :(得分:1)

我找到了。最好的方法是编译库,然后使用本地引用“.a”文件。

Makefile示例

CC = gcc -g -Wall 
GLIB =  `pkg-config --cflags --libs glib-2.0`
PCAPLIB     = -lpcap
LNETLIB     = -lnet

LIBS_SRC    = libnids-1.24/src/libnids.a
LIBS        = $(PCAPLIB) $(LNETLIB) -lgthread-2.0 

program: program.c
    $(CC) -c $(CFLAGS) program.c -o program.o $(GLIB) $(LIBS)
    $(CC) program.o  -o program $(LIBS_SRC) $(GLIB) $(LIBS)

但是如果你想编译库并将它安装到你的系统中,你必须使用 -lnids 而不是上面的方式。但第一个解决方案始终有效。

答案 1 :(得分:0)

在libnids下编译样本时出错:

gcc -o overflows overflows.o -L ../ src -lnids -lpcap -lnet -lgthread-2.0 -lnsl ../src/libnids.a / usr / bin / ld:../ src / libnids.a(libnids.o):对符号'g_async_queue_pop'的未定义引用 /lib/x86_64-linux-gnu/libglib-2.0.so.0:添加符号时出错:命令行中缺少DSO collect2:错误:ld返回1退出状态 make: * [overflows]错误1

你推荐

GLIB =  `pkg-config --cflags --libs glib-2.0`

解决了我的问题。

PS:我的系统Ubuntu 13.10。 64位。