我一直在尝试安装 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 但我不知道是否因为这些遗漏的东西而停止运作。
答案 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位。