我一整天都在尝试安装[医]脂 (Ubuntu和Mac ),现在我知道如何用它编译程序了。
我在这里写这篇文章是因为这里没有太多的文档,但是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中编译它,请忽略这一点:-lgsert-2.0 -lnsl -L./src,但是我不知道某些东西是否因为这些遗漏的事情而停止工作。
发布于 2012-11-17 13:11:10
我找到了。最好的方法是编译库,然后使用对".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而不是上述方式。但第一个解决方案总是有效的。
发布于 2013-10-20 14:48:55
我在libnids下编译示例时出错:
gcc -o溢出.o-L./src -lnids -lpcap -lnet -lg线程-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。
你的建议
GLIB = `pkg-config --cflags --libs glib-2.0`解决了我的问题。
PS:我的系统Ubuntu 13.10。64位
https://stackoverflow.com/questions/12399214
复制相似问题