首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用libnids编译

使用libnids编译
EN

Stack Overflow用户
提问于 2012-09-13 04:00:04
回答 2查看 1.7K关注 0票数 2

我一整天都在尝试安装[医]脂 (Ubuntu和Mac ),现在我知道如何用它编译程序了。

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

代码语言:javascript
复制
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,但是我不知道某些东西是否因为这些遗漏的事情而停止工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-17 13:11:10

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

Makefile示例

代码语言:javascript
复制
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而不是上述方式。但第一个解决方案总是有效的。

票数 2
EN

Stack Overflow用户

发布于 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。

你的建议

代码语言:javascript
复制
GLIB =  `pkg-config --cflags --libs glib-2.0`

解决了我的问题。

PS:我的系统Ubuntu 13.10。64位

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12399214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档